GWT JSNI - Java到Javascript返回到Java结果未定义的参数
GWT JSNI - Java To Javascript Back To Java Results in undefined params
这两天我已经绞尽脑汁了。我已经通读了这里的JSNI文档以及一些关于JSNI和传递变量的不同博客文章,没有任何迹象表明我做错了什么。本质上,我要做的是从我的GWT客户端类调用到javascript方法,我导出到javascript作为我的类加载。该方法从另一个JS方法获取参数,并将它们存储在我传递的Java类的实例中。这似乎行得通。但是,当我在java代码中引用这些方法时,它们是未定义的。我相信正在发生的事情是我的Java类实例在JS完成后不知何故丢失了。这里有一些代码来帮助解释工作流程…
我有一个名为ProfileWidgee的Java类。该类具有为位置、纬度和经度设置局部变量的方法。方法名是…
public void handleTargetPicked(String mloc, String mlat, String mlng) {
loc = mloc.equalsIgnoreCase("undefined") ? "" : mloc;
lat = mlat.equalsIgnoreCase("undefined") ? "" : mlat;
lng = mlng.equalsIgnoreCase("undefined") ? "" : mlng;
Window.alert("setting on js side" + loc + lat + lng);
}
该方法使用JSNI方法exportMyFunction…作为函数导出到JS
public static native void exportMyFunction(ProfileWidgee instance)/*-{
$wnd.handleTargetPicked = $entry(
instance.@com.n.j.client.widgees.profile.ProfileWidgee::handleTargetPicked(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;));
}-*/;
一切似乎都很顺利。它导出,我能够调用handletargetpick在我的JS如下…
handleTargetPicked(encodeURIComponent(place.formatted_address),
encodeURIComponent(place.geometry.location.lat()),
encodeURIComponent(place.geometry.location.lng()));
所有这些似乎都可以工作,并且windows .alert()显示正确的值。这让我相信它有我的类的适当实例,并且它适当地设置了变量。后来,虽然当我回到我的Java类,我尝试引用这些变量,他们总是返回为"未定义"。'
Window.alert("reading on the java side" + pw.getLoc() + pw.getLat() + pw.getLng());
这将导致三个值都为'undefined'。所以我的大问题是…是否有可能从JS端在Java类中设置一个值,然后在以后的类中使用该值?
我刚刚遇到了类似的情况,碰巧看到了你的帖子。我找不到任何建议的解决方案,所以我试着自己调试。
我看到的是,'this'变量指向Window而不是对象实例。
因此,而不是直接调用方法,如handletargetpick (arg1, arg2),我使用method.call()传递上下文,如handletargetpick。调用(instance, arg1, arg2)。这种方法解决了我的问题。
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- Java 脚本中未定义的变量
- Java脚本错误-can't将未定义转换为对象
- Mozilla 中的 Java 脚本未定义错误
- 为什么我的 javascript 数组从 java 对象中获取未定义的值
- 使用crypto-js加密密码并通过ajax发送表单(并在java中解密),我得到:类型错误:无法读取未定义的属性“单词
- Java 脚本未定义的变量,基本的 html 表单
- 返回未定义的 Java 脚本
- 触发时返回未定义的Java脚本
- Java调用JS与Rhino (Uint8Array未定义)
- 未捕获类型错误:不能读取属性'text'在Java脚本中获取所选值的未定义
- Java Script Ionic框架中的未定义对象
- GWT JSNI - Java到Javascript返回到Java结果未定义的参数
- Java-script,谷歌chrome扩展:未定义的类变量,在方法中引用的回调
- 在java脚本中读取文件时未定义
- Java脚本函数未定义JSP错误
- 通过GWT中的框架从javascript调用JSNI Java函数 - $wnd是未定义的错误