2017-10-03 34 views
0

Ich verwende Wicket 7.x mit der History API. Ich versuche gerade, ein AjaxEventBehavior für "onpopstate" zu verkabeln. Ich habe Code, der ein Objekt hinzufügt, wenn ich history.pushState mache, mein Problem ist, dass ich nicht auf diese zusätzlichen Informationen von der Java-Seite mit onEvent zugreifen kann.Wick AjaxEventBehavior mit Verlauf API

Probe pushstate:

target.appendJavaScript("history.pushState({query: '" + 
searchResults.getQueryString() + "'}, null, window.location.pathname);"); 

EventBehavior:

this.getPage().add(new AjaxEventBehavior("onpopstate") 
{  
    @Override 
    protected void onEvent(AjaxRequestTarget target) 
    { 
     //code to get query defined in pushState 
    } 
}); 

updateAjaxAttributes ist keine Lösung, weil es nur aufgerufen, wenn die Seite gerendert wird. Ich muss diese zusätzlichen Daten senden, wenn popstate aufgerufen wird.

Antwort

1

updateAjaxAttributes kann Ihnen tatsächlich helfen. AjaxRequestAttributes können Sie auch dynamische zusätzliche Attribute angeben (siehe here für weitere Informationen). Diese Parameter werden auf der Clientseite dynamisch berechnet, bevor AjaxEventBehavior ausgelöst wird und als Anforderungsparameter gesendet werden.

+0

Hallo, danke für den Tipp. Es hat mich auf den richtigen Weg gebracht! Ich verwende jetzt getDynamicExtraParameters wie Sie vorgeschlagen haben. Das einzige Problem, mit dem ich konfrontiert bin, ist, wenn die zusätzlichen Parameter hinzugefügt werden, es passiert zu früh in meinem Ereignis, um die richtigen Informationen abzurufen. Gibt es eine Möglichkeit, die Ausführung bis zu einem späteren Zeitpunkt zu verzögern? Der aktuelle Wert, den ich an getDynamicExtraParameters übergebe, lautet "return {'query': attrs.event.originalEvent.state.query}". – Greg

+1

Ich habe eine Lösung für mein Problem gefunden, ich habe die History API missbraucht. Danke für die tolle Antwort! – Greg