私はおそらく何かばかげたことを知っていますが、GWTを使用してJavaメソッドからJavaメソッドを呼び出す方法を実際に示す例は見つかりません。
package mypackage;
public class Account {
private int balance = 0;
public int add(int amt) {
balance += amt;
}
public native void exportAdd() /*-{
var that = this;
$wnd.add = $entry(function(amt) {
[email protected]::add(I)(amt);
});
}-*/;
}
I've followed the documentation almost verbatim where is says:
は、その後、あなたは$wnd.add(5);
を使用してJSでそれを呼び出すことができますしかし、それは "$のWNDが未定義である" と言う私のためにエラーが発生します。
これは私のコードです: 私は(私はそれが呼ばれるように取得するにはまだきているため、ブレークポイントで)私は呼ばれていますシンプルな機能を持つ関数呼び出し
public native void exportPaymentProcessComplete()/*-{
var that = this;
console.log('exportingPaymentProcessComplete');
$wnd.paymentProcessComplete = $entry(function(result){
[email protected]::paymentProcessComplete(Ljava/lang/String;)(result);
});
}-*/;
をエクスポート
public void paymentProcessComplete(String result){
if(result != null){
}
}
これは難しい部分ですが、おそらく私が間違っているところです。 iframeがロードされるとJSNI呼び出しが行われます。私は親ウィンドウのjavascript関数を呼び出すことと関係があると思いますが、親$ wndオブジェクトを参照する方法がわかりません。
私はこれを試してみた:私は "$のWNDが定義されていません" というエラーを取得するとき
response.getWriter().print("<script type=\"text/javascript\">parent.$wnd.paymentProcessComplete(\"SUCCESS\");</script>");
はどれ。
そしてまた、この:
response.getWriter().print("<script type=\"text/javascript\">parent.paymentProcessComplete(\"SUCCESS\");</script>");
私に「未定義またはnull参照のプロパティを取得できません 『paymentProcessComplete』」を与えます。これは基本的に "$ wnd is undefined"と同じエラーです。
誰でもこれを達成するための考えがありますか?
なぜこれが投票されたのですか?それは正解です。 – Miniversal