如何在gwt jsni方法中使用int值
如何在jsni方法中使用int值如何在gwt jsni方法中使用int值,gwt,Gwt,如何在jsni方法中使用int值 公共类Person扩展JavaScriptObject{ //其他一些方法 公共最终本机无效设定点(int i)/*-{ this.points=this.points+i; }-*/; 公共最终本机int getPoints()/*-{ 返回此项。点数; }-*/; } 我在一个与JsArra
公共类Person扩展JavaScriptObject{
//其他一些方法
公共最终本机无效设定点(int i)/*-{
this.points=this.points+i;
}-*/;
公共最终本机int getPoints()/*-{
返回此项。点数;
}-*/;
}
我在一个与JsArray相结合的方法中使用它
public static boolean moreThanZeroPoints(JsArray<Person> arr, int index){
if(arr.get(index).getPoints() > 0){
return true;
}
return false;
}
对于arr.get(index).settingpoints(1)
我会收到相同的错误消息。
怎么了?
请提供帮助。注意,代码没有直接在方法中引用
JavaScript窗口对象。从JSNI访问浏览器的窗口和文档对象时,必须分别将它们引用为$wnd和$doc
。编译后的脚本在嵌套框架中运行,$wnd和$doc将自动初始化,以正确引用主机页的窗口和文档。
public最终本机int设置点(int i)/-{
$wnd.points=$wnd.points+i;
}-/;
并希望如下:
public final native int getPoints()/*-{
返回评估('wnd.'+点数);;
}-*/;
因为点可能不存在,所以必须在getPoints()
中将未定义的强制为某个整数值;或者添加一个hasPoints()
方法,并仅在定义points
时调用getPoints()
。
//将未定义(或null或0)强制为0
公共最终本机int getPoints()/*-{
返回此。点| | 0;
}-*/;
或
//强制未定义或null为-1
公共最终本机int getPoints()/*-{
返回(this.points!=null)?this.points:-1;
}-*/;
对于setPoints()
,您声明了一个返回类型int
,但实际上从未声明过任何return
,这相当于在JS中返回未定义的
。qben编辑了您的答案,并通过将返回类型更改为void
来修复它。包含这些方法的类是什么?(我想是JavaScriptObject
子类?)什么是“不工作”呢?(即调用这些方法的代码是什么样子的?预期结果是什么?实际结果是什么?)请添加一些此类的代码。只看到这一段很难帮助你。我编辑了我的问题。希望能有帮助。据我所知,你有arr.get(index)
。。。不检查arr
在该索引上是否有值,这可能导致某种边界外异常。我将设置点
方法的返回类型更正为void
,因为我认为这只是一个勘误表。如果您是从代码中复制的,请修改它。@Baadshah,在本例中,Pero使用的是GWT覆盖类型,允许在引用底层JS对象的本机方法中使用this
关键字。有关更多详细信息,请参阅。
uncaught: Exception caught: Exception: caught: something other than an int was returned from JSNI method.
package-path:: getPoints(): JS value of type undefined, expected int