Wenn ich das tun kann, wie rufe ich Java-Code (Methoden zum Beispiel) aus JavaScript-Code, in Wicket.Wie rufe ich Java-Code von JavaScript-Code in Wicket?
Antwort
erk. Die richtige Antwort wäre Ajax Call Backs. Sie können die js entweder manuell codieren, um sie in das Wicket js einzubinden, oder Sie können die Callbacks von Wicket-Komponenten in Java einrichten. Zum Beispiel von AjaxLazyLoadPanel:
component.add(new AbstractDefaultAjaxBehavior() {
@Override
protected void respond(AjaxRequestTarget target) {
// your code here
}
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.renderOnDomReadyJavascript(getCallbackScript().toString());
}
}
Dieses Beispiel zeigt, wie Code auf jede Komponente in Wicket hinzuzufügen zurückrufen. Nachdem das Ereignis OnDomReady in Ihrem Browser ausgelöst wurde, wird Wicket beim Laden einer Seite veranlassen, dass es js enging aufruft, um mit Hilfe von Ajax den Code, der oben gezeigt wurde, wieder in Ihren Code einzufügen Server und möglicherweise Komponenten zu dem Ajax-Ziel hinzufügen, um erneut gerendert zu werden.
Um es manuell von js aus zu tun, können Sie sich in Wickets System einklinken, indem Sie getCallbackScript(). ToString() auf ein Attribut in einer Wicket-Komponente ausgeben, auf das Sie dann von js zugreifen können. Rufen Sie diese URL von js manuell mit wicket's wicketAjaxGet von wicket-ajax.js.
Schauen Sie sich die Mailingliste für das Los in der Konversation zu diesem Thema: http://www.nabble.com/Wicket-and-javascript-ts24336438.html#a24336438
http://www.wicket-library.com/wicket-examples-6.0.x/index.html/ viele Beispiele hat man in Gang zu bringen.
Oder einen Blick auf DWR haben, haben
DWR ermöglicht Javascript in einem Browser mit Java auf einem Server zu interagieren und hilft Ihnen, Web-Seiten mit den Ergebnissen zu manipulieren.
Wie Dorward erwähnt, geschieht dies über AJAX
Defekten Link http://wicketstuff.org/wicket13/ajax/ – Gorky
Auszug aus https://cwiki.apache.org/WICKET/calling-wicket-from-javascript.html
Wenn Sie eine Klasse hinzufügen, die AbstractDefaultAjaxBehavior zu Ihrer Seite erstreckt, Wicket-ajax.js wird hinzugefügt zum Header Ihrer Webseite. Wicket-ajax.js Sie mit zwei grundlegenden Methoden bietet die Komponente zu nennen:
function wicketAjaxGet(url, successHandler, failureHandler, precondition, channel)
und
function wicketAjaxPost(url, body, successHandler, failureHandler, precondition, channel)
Hier ist ein Beispiel:
JavaScript
function callWicket() {
var wcall = wicketAjaxGet('$url$' + '$args$', function() { }, function() { });
}
$url$
ist erhalten aus der Methode abstractDefaultAjaxBehavior.getCallbackUrl()
. Wenn Sie den von dieser Methode zurückgegebenen String in Ihren Browser einfügen, rufen Sie die Antwortmethode auf, das gleiche gilt für die JavaScript-Methode.
Sie können optional Argumente hinzufügen, indem Sie diese an die URL-Zeichenfolge anhängen. Sie nehmen die Form &foo=bar
.
erhalten Sie die optionalen Argumente in der Java-Response-Verfahren wie folgt aus:
Map map = ((WebRequestCycle) RequestCycle.get()).getRequest().getParameterMap();
oder dies:
String paramFoo = RequestCycle.get().getRequest().getParameter("foo");
Erwähnenswert, dass sich die API zum Extrahieren von Parametern in Wicket 1.5 geändert hat. Nachdem Sie 'RequestCycle.get(). GetRequest()' aufgerufen haben, müssen Sie 'getQueryParameters()' (für GET-Parameter), 'getPostParameters()' (für POST-Parameter) oder 'getRequestParameters aufrufen() '(für alle gleichzeitig). Jeder gibt eine IRequestParameters-Instanz zurück, die Sie nach Parametern abfragen können. Siehe [die API-Dokumentation] (http://wicket.apache.org/apidocs/1.5/). – cooperised
Oh, und ein Gotcha: die URL, die von 'getCallbackUrl()' zurückgegeben wird, kann sich während des Bauzyklus der Komponente ändern. Es ist oft ungenau, wenn Sie versuchen, es im Konstruktor zu verwenden, und Callbacks werden daher fehlschlagen. Ich habe Erfolg damit gehabt, stattdessen die Komponente 'onBeforeRender()' zu überschreiben. – cooperised
- 1. Wie rufe ich Enumerable.Join von F #?
- 2. Wie rufe ich Werte von dojo.data.ItemFileReadStore
- 3. Wie rufe ich Python-Code von Ruby?
- 4. Wie ändere ich Link-Text in Wicket?
- 5. Wie rufe ich animateAlongsideTransition in Swift?
- 6. Wie rufe ich von v-imode in das Systemregister?
- 7. Wie rufe ich mpmovieplayer von applicationwillresignactive in ppdelegate?
- 8. Anpassen von IndicationAjaxLink in Wicket
- 9. Wie verknüpfe ich Wicket Dropdown-Listenereignisse?
- 10. org.apache.wicket.extensions.yui.calendar.timefield wie man wicket
- 11. Wie entferne ich eine CSS-Klasse von einer Wicket-Komponente?
- 12. Wie kann ich eine dynamische JavaScript-Datei von Wicket bereitstellen?
- 13. Wie rufe ich HTML über AJAX - Elgg?
- 14. Wie rufe ich Redis StringSet() aus F #
- 15. Wie zusätzlichen Parameter von AjaxRequest Wicket 6
- 16. Wie rufe ich IL2JS richtig auf?
- 17. Wie rufe ich eine Flask-Ansicht von einem anderen an?
- 18. Wie rufe ich die Win32-API von einem Cygwin-Programm
- 19. Wie rufe ich die ReplaceFile-Funktion von C# auf?
- 20. Wie rufe ich Stargazer auf einer Liste von Modellen auf?
- 21. wie rufe ich asp.net regExp validator von Javascript auf?
- 22. Wie rufe ich C von Go über die "Fremdfunktionsschnittstelle" an?
- 23. Wie rufe ich eine TSQL-Funktion von ado.net
- 24. Wie rufe ich mysql TEMPORARY TABLE von CodeIgniter?
- 25. Wie rufe ich meine Methode von meinem Dienst an?
- 26. Wie rufe ich C++ - Compiler programmgesteuert auf?
- 27. Wie rufe ich eine Controller-Methode von JQuery?
- 28. Android: erstellen Checkbox über javacode in Klasse Fragment
- 29. Wie rufe ich MVC Controller von mit Javascript-Funktion
- 30. Wie rufe ich eine Member-Funktion von ComponentDidMount
die letzte Link funktioniert nicht –