0

JSNIを介してJavascriptメソッドに値を渡そうとしましたが、失敗し続けます。

この方法は有効ですか?

public static native JavaScriptObject getProductById(long pid) /*-{
    var productId = pid;
    var product = $wnd.products({id:productId}).first();    
    return product;
}-*/;

productIdの代わりに定数値を入れると正しい出力が得られるので、JSメソッドは正しいと言えます。

私は何が欠けていますか?

4

3 に答える 3

4

longJSNIでは、入力変数としての使用は許可されていません。ここでの説明を参照してください。

代わりにdouble(またはint)を使用してみることができますが、Javascriptコードがそれをサポートしていることを確認してください。

public static native JavaScriptObject getProductById(double pid) /*-{
    var productId = pid;
    var product = $wnd.products({id:productId}).first();    
    return product;
}-*/;
于 2013-03-19T08:21:11.570 に答える
0

本当にlongとして渡す必要がある場合は、文字列として渡し、parseFloatを使用して変換することができます。この投稿で説明されています。

文字列をJavaScriptで長い文字列に変換する方法

于 2013-03-19T08:28:58.960 に答える
0

gwtqueryを使用すると、js関数の呼び出しや、jsプロパティの構築や読み取りなど、ほとんどの些細なことでJSNIを処理する必要がなくなる優れたユーティリティメソッドが得られます。

 import static com.google.gwt.query.client.GQuery.*;
 ...

 Properties prd = JsUtils.runJavascriptFunction(window, "products", $$("id: 12345"));
 Properties ret = JsUtils.runJavascriptFunction(prd, "first");

 System.out.println(ret.toJsonString());
于 2013-03-19T20:03:12.693 に答える