借助传统方法使用高级 GWT 控件
2010-03-09 00:00:00 来源:WEB开发网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;
}-*/;
- ››传统的JavaScript事件处理函数
- ››传统javascript事件模型实现观察者模式
- ››传统企业如何白手起家有效抢占互联网营销制高点
- ››借助 BeanKeeper 快速实现对象持久化
- ››借助传统方法使用高级 GWT 控件
- ››借助 Ajax 自动保存 JSF 表单: 第 3 部分:保存 J...
- ››借助Word 2003文档窗口的任务窗格提高效率
- ››借助Powercfg命令 - 深入了解Windows 7中的电源选...
- ››借助Excel的视图和宏分类显示表单数据
- ››借助WebService实现多线程上传文件
- ››借助QQ安全中心搞定安全网页链接
- ››借助大视频战略 PPS领跑国内视频业
更多精彩
赞助商链接