WEB开发网
开发学院网页设计JavaScript 借助传统方法使用高级 GWT 控件 阅读

借助传统方法使用高级 GWT 控件

 2010-03-09 00:00:00 来源:WEB开发网   
核心提示: JSNI 可以视为内联汇编代码的 Web 对等物,可以用来: 直接在 JavaScript 内实现 Java 代码,借助传统方法使用高级 GWT 控件(4),为现有的 JavaScript 包装上类型安全的 Java 方法签名,从 JavaScript 调用 Java 代码,示例代码展示了一种很

JSNI 可以视为内联汇编代码的 Web 对等物,可以用来:

直接在 JavaScript 内实现 Java 代码。

为现有的 JavaScript 包装上类型安全的 Java 方法签名。

从 JavaScript 调用 Java 代码,反之亦然。

跨 Java/JavaScript 界线抛出异常。

从 JavaScript 读写 Java 字段。

使用宿主模式调试 Java 源代码(通过 Java 调试器)和 JavaScript(通过脚本调试器)。

GWT 开发文档提示说必须慎重使用 JSNI ,因为不能保证浏览器的可移植性,而且编译代码的优化是有限制的。至于商业控件,您可以依赖供应商的承诺来支持多个浏览器类型和部署平台。

当从 JSNI 访问浏览器窗口和文档对象时,必须将其分别作为 $wnd 和 $doc 加以引用。而所编译的脚本则在嵌套的框架中运行,$wnd 和 $doc 会自动初始化以正确指代宿主页面的窗口和文档。

示例代码展示了一种很好的技巧,即使用 JSNI 来将一维或二维的 Java 字符串数组转换成 JavaScript 数组,以便于用数据填充数组,如清单 3 所示:

清单 3. Java 到 JavaScript 数组的转换

public static JavaScriptObject arrayConvert(String[] array) { 
  JavaScriptObject result = newJSArray(array.length); 
  for (int i = 0; i<array.length; i++) { 
   arraySet(result, i, array[i]); 
  } 
  return result; 
} 
 
private static native JavaScriptObject newJSArray(int length) /*-{ 
  return new Array(length);  
}-*/; 
 
public static native int arrayLength(JavaScriptObject array) /*-{ 
  return array.length; 
}-*/; 
 
public static native String arrayGetObject(JavaScriptObject array, int index) /*-{ 
  return array[index]; 
}-*/; 
 
public static native void arraySet(JavaScriptObject array,int index,String value) /*-{ 
  array[index] = value; 
}-*/; 

上一页  1 2 3 4 5 6  下一页

Tags:借助 传统 方法

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接