Ich weiß, ich mache wahrscheinlich nur etwas Dummes, aber ich kann kein Beispiel finden, das zeigt, wie man eine Java-Methode von Javascript mit GWT aufruft.
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);
});
}-*/;
}
Dann können Sie es in JS nennen
$wnd.add(5);
mit Aber das ergibt für mich in einem Fehler, der "$ wnd ist nicht definiert", sagt.
Dies ist mein Code: ich den Funktionsaufruf
public native void exportPaymentProcessComplete()/*-{
var that = this;
console.log('exportingPaymentProcessComplete');
$wnd.paymentProcessComplete = $entry(function(result){
[email protected]::paymentProcessComplete(Ljava/lang/String;)(result);
});
}-*/;
Ich habe eine einfache Funktion exportieren, die genannt werden (mit einem Haltepunkt, weil ich es noch habe zu bekommen genannt werden)
public void paymentProcessComplete(String result){
if(result != null){
}
}
Dies ist der schwierige Teil und wahrscheinlich, wo ich falsch liege. Der JSNI-Aufruf wird beim Laden von einem iframe ausgeführt. Ich denke, es hat mit dem Versuch zu tun, die JavaScript-Funktionen des Elternfensters aufzurufen, aber ich bin mir nicht sicher, wie ich auf das $ wnd-Objekt der Eltern verweisen soll.
Ich habe dies versucht:
response.getWriter().print("<script type=\"text/javascript\">parent.$wnd.paymentProcessComplete(\"SUCCESS\");</script>");
Was ist, wenn ich den "$ wnd ist nicht definiert" Fehler.
Und auch dies:
response.getWriter().print("<script type=\"text/javascript\">parent.paymentProcessComplete(\"SUCCESS\");</script>");
die mir „Kann nicht bekommen Eigenschaft‚paymentProcessComplete‘undefinierter oder Null-Referenz“ gibt. Das ist im Grunde der gleiche Fehler wie "$ wnd is undefined".
Wer hat irgendwelche Gedanken darüber, wie dies zu erreichen ist?
Warum wurde das abgelehnt? Es ist die richtige Antwort. – Miniversal