Trong javascript console nếu tôi làm điều này,GWT để Javascript chuyển đổi
a = [1,2,3]
Object.prototype.toString.call(a) // gives me "[object Array]"
typeof a // gives me "object"
Nếu tôi tạo một ArrayList trong GWT và vượt qua nó đến một phương pháp tự nhiên và làm được điều này,
// JAVA code
a = new ArrayList<Integer>();
a.push(1);
a.push(2);
//JSNI code
Object.prototype.toString.call(a) // gives me "[object GWTJavaObject]"
typeof a // returns "function"
gì chính xác là sự khác biệt giữa cả hai? Có phải GWTJavaObject giống hệt với Mảng?
Tại sao typeof
trở lại "đối tượng" trong tinh khiết javascript nhưng "chức năng" trong GWT?
Câu hỏi tóm tắt là, chính xác những đối tượng GWT được chuyển đổi thành Javascript là gì? Toàn bộ mã số có tại đây.
public void onModuleLoad()
{
List<Integer> list = new ArrayList<Integer>();
list.add(new Integer(100));
list.add(new Integer(200));
list.add(new Integer(300));
Window.alert(nativeMethodCode(list));
Window.alert(nativeMethodCode2(list));
}
public static final native Object nativeMethodCode(Object item)
/*-{
return Object.prototype.toString.call(item);
}-*/;
public static final native Object nativeMethodCode2(Object item)
/*-{
return typeof item;
}-*/;
Về cơ bản, bạn đang hỏi cách triển khai GWT. Đó là những gì bạn có ý định, hoặc là có một cái gì đó cụ thể hơn? – Potatoswatter
Cảm ơn bạn đã phản hồi nhanh. Đang cố gắng sử dụng JSNI bên trong GWT, đó là nơi tất cả các câu hỏi này xuất hiện, bởi vì các phương thức tôi viết trong JSNI hoạt động trong giao diện điều khiển trình duyệt nhưng không phải trong GWT. – LPD
theo [this] (https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI#passing-java), không thể truy cập các mảng Java từ mã JSNI. Xin lỗi ... hy vọng trang đó và giúp bạn thực hiện một cách giải quyết (chắc chắn là có thể). – Potatoswatter