有个框架,本身已经提供了一些 Ajax 访问的代码。如果要自己重新写,不仅
要走 GWT RPC这样的东西,而且服务端的已有框架完全没法利用。所以,想
用 jsni 来把这部分 Ajax 代码引入进来。
第一步,如何把其他js include进来?
办法有两个。一个是在 Html里面,用
<script type="text/javascript" language="javascript" src="/xxx.js"></script>
另外一种,我更喜欢的是放在 .gwt.xml里面,在 module的定义下面,
<script src="/xxx.js"/>
这样别人要用我的module,也不怕忘了引用这个外部的xxx.js。
第二步,如何获取其他js里面的变量?
一开始很傻,发现xxx.js里面的变量总是访问不到。看了文档才知道,
在jsni里面,只有两个变量可以直接用, $wnd和 $doc,其他js里面定义的变量,
都要通过 $wnd.xxx 这样才能获取到。
第三步,如何把 jsni 里面获取到的对象,返回到java里面?
用 ajax 获取到的对象,要把它转换为一个包含了 Record的 RecordList。
也就是说要在 JavaScriptObject 和 java 对象之间变来变去的。我的做法
如下所示:
public static native RecordList loadData() /*-{
var myAjax = new $wnd.Ajax("...");
...
var size = myAjax.getValue( "root/data/page/size");
var array = @com.smartgwt.client.util.JSOHelper::createJavaScriptArray()();
var i = 0;
for ( i=1; i<=size; i++) {
var obj = {};
obj["name"]=myAjax.getValue( "root/data/tpictures[" + i +"]/name");
var record = @com.smartgwt.client.data.Record::getOrCreateRef(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
array.add( record.@com.smartgwt.client.core.DataClass::getJsObj()());
}
return @com.smartgwt.client.data.RecordList::getOrCreateRef(Lcom/google/gwt/core/client/JavaScriptObject;)(array);
}-*/;
分享到:
相关推荐
- **可扩展性**:如果GWT的API不足以满足需求,开发者可以使用JSNI(Java to JavaScript Native Interface)直接嵌入JavaScript代码。 2. **用GWT进行UI开发** - **UI组件和面板**:GWT提供多种UI组件,包括按钮...
GWT(Google Web Toolkit) 是 Google 最近推出的一个开发 Ajax 应用的框架,它支持用 Java 开发和调试 Ajax 应用,本文... 如果你觉得GWT提供的API不能满足需求,你可以利用JSNI将Javascript语句直接嵌入至Java代码中。
GWT通过提供Java语言的开发环境,让开发者可以使用熟悉的Java语法编写Ajax应用,然后利用GWT的编译器将Java代码转换为浏览器兼容的JavaScript和HTML。这使得调试过程与普通Java程序无异,极大地提高了开发效率。 **...
5. 可扩展性,GWT提供了JSNI(JavaScript Native Interface)允许开发者在Java代码中嵌入JavaScript代码,提供了强大的自定义和扩展能力。 GWT的四大组成部分包括: 1. Java-to-JavaScript编译器,负责将Java代码...
在这种情况下,GWT 支持 JavaScript Native Interface (JSNI),允许开发者直接在 Java 代码中嵌入 JavaScript 代码。这种机制为开发者提供了极大的灵活性,使其能够在需要时使用原生 JavaScript 功能。 #### 二、用...
如果GWT的标准API无法满足特定需求,开发者可以通过JSNI(JavaScript Native Interface)将JavaScript代码直接嵌入到Java代码中,以此来扩展GWT的功能。 #### 二、用GWT进行UI开发 GWT为UI开发提供了强大的支持,...
通过GWT,开发者能够在开发阶段充分利用Java的强大功能进行编码、调试及维护,而最终的输出则会被编译成能在各种浏览器中运行的JavaScript和HTML代码。 #### 二、Ajax技术简介 Ajax(Asynchronous JavaScript and ...
JSNI(JavaScript Native Interface)是GWT提供的一种用于调用原生JavaScript代码的接口。当GWT的API无法满足需求时,可以通过JSNI来扩展功能。使用JSNI实现右键菜单的优点在于可以充分利用JavaScript的灵活性,实现...
5. **可扩展性**:通过JavaScript Native Interface(JSNI),开发者可以方便地引入自定义的JavaScript代码,增强GWT应用的功能。 GWT的核心组成部分包括: 1. **Java-to-JavaScript编译器**:负责将Java代码转化为...
《GWT in Action》是一本深入探讨Google Web Toolkit(简称GWT)的书籍,它为读者提供了利用GWT创建易于使用的AJAX应用程序的方法。本书由Robert Hanson和Adam Tacy撰写,由Manning Publications出版。 GWT是一种...
这部分深入探讨了GWT的高级特性和开发技巧,包括自定义小部件、客户端捆绑包的使用、界面设计、远程过程调用(RPC)、请求工厂、编辑器框架、数据呈现组件、JavaScript Native Interface (JSNI)、经典Ajax和HTML表单...
如果希望自定义这个菜单的行为,可以通过GWT提供的API或JavaScript Native Interface (JSNI)来实现。 #### 实现方法 - **GWT方式**:基于GWT的事件机制实现。这种方式的优点是能够确保跨浏览器的兼容性,但是可能...
如果GWT的标准库无法满足需求,开发者还可以使用JavaScript Native Interface (JSNI)在Java源代码中嵌入手写JavaScript,或者通过扩展JavaScriptObject (JSO)类来实现与JavaScript库的交互。 GWT还提供了对浏览器...
第 4 部分: 利用 DOM 进行 Web 响应 44 1.1 Web 程序员和标记 44 1.2 进一步了解 Web 浏览器 46 1.3 对象的值 49 1.4 DOM 简介 52 第 5 部分: 操纵 DOM 55 1.1 跨浏览器、跨语言 55 1.2 节点的概念 56 1.3 ...