Я знаю, что я, вероятно, просто делаю что-то глупое, но я не могу найти пример, который на самом деле показывает, как вызвать метод Java из javascript с помощью GWT.
I've followed the documentation almost verbatim where is says:
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);
});
}-*/;
}
Тогда вы можете вызвать его в JS с помощью
$wnd.add(5);
Но это приводит к ошибке для меня, что говорит "$ 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){
}
}
Это сложная часть, и, вероятно, я ошибаюсь. Вызов JSNI производится из iframe, когда он загружается. Я думаю, что это связано с попыткой вызвать javascript-функции родительского окна, но я не уверен, как обращаться к объекту $ wnd.
Я попытался это:
response.getWriter().print("<script type=\"text/javascript\">parent.$wnd.paymentProcessComplete(\"SUCCESS\");</script>");
Который, когда я получаю "$ WND не определен" ошибка.
А также это:
response.getWriter().print("<script type=\"text/javascript\">parent.paymentProcessComplete(\"SUCCESS\");</script>");
Что дает мне «Невозможно получить свойство„paymentProcessComplete“неопределенной или нулевой ссылки». Это, по сути, та же ошибка, что и «$ wnd undefined».
У кого-нибудь есть мысли о том, как это сделать?
Почему это проголосовали? Это правильный ответ. – Miniversal