因为工作的原因,接触学习了GWT。现阶段需要在Java里调用strophe.js,折腾了许久终于成功调用了外部的js文件,便来把自己的流程记下,献给与我一般困惑的人,也避免以后忘记后得重新研究。
使用JSNI编写内部js,这个很简单,一般不会出错,唯一需要注意的就是native关键字以及编写格式,“/- -/”里面的代码为js代码。
public static native void alert(String msg)/*-{
$wnd.alert(msg);
}-*/;
- 使用JSNI调用外部js。此处一个很关键的地方是“$wnd.”,我先前的测试没写这个,所以eclipse一直在报错说找不到Strophe。
public static native void onConnect(int status)/*-{
if (status == $wnd.Strophe.Status.CONNECTED) {
$wnd.alert('connect');
} else {
$wnd.alert(status);
}
}-*/;
- 在js里调用Java方法。这里唯一要注意的就是方法得写全名,在哪个包,哪个类都得写清楚。
public static native void Connect()/*-{
var BOSH_SERVICE = '/http-bind';
var connection = null;
var jid = 'a@xmpp.demo';
connection = new $wnd.Strophe.Connection(BOSH_SERVICE);
connection.connect(jid, '1', @com.healthFriend.healthApp.client.JSNI.JSNIDemo::onConnect(I));
}-*/;
- 各类JSNI调用js的文章在网上很多,若有其他问题多多查找。对着自己的代码一遍遍的比对,看的多了不知觉的就把问题解决了。