2017-10-03 9 views
0

J'utilise Wicket 7.x avec l'API History. J'essaie actuellement de câbler un AjaxEventBehavior pour "onpopstate". J'ai du code qui ajoute un objet quand je fais history.pushState, mon problème est que je ne peux pas accéder à cette information supplémentaire du côté Java avec onEvent.Wick AjaxEventBehavior avec l'API d'historique

Exemple 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 est pas une solution car elle est appelée uniquement lorsque la page est rendue. Je dois envoyer ces données supplémentaires quand popstate est appelé.

Répondre

1

updateAjaxAttributes peut réellement vous aider. AjaxRequestAttributes vous permet de spécifier également des attributs supplémentaires dynamiques (voir here pour plus d'informations). Ces paramètres sont calculés dynamiquement du côté client avant que AjaxEventBehavior soit déclenché et sont envoyés en tant que paramètres de requête.

+0

Bonjour, merci pour le conseil. Cela m'a mis sur la bonne voie! J'utilise maintenant getDynamicExtraParameters comme vous l'avez suggéré. Le seul problème auquel je suis confronté est lorsque les paramètres supplémentaires sont ajoutés, il se passe trop tôt dans mon événement pour récupérer les informations correctes. Est-il possible de retarder l'exécution jusqu'à une date ultérieure? La valeur actuelle que je passe à getDynamicExtraParameters est "return {'query': attrs.event.originalEvent.state.query}". – Greg

+1

J'ai trouvé une solution à mon problème, j'utilisais abusivement l'API History. Merci pour la bonne réponse! – Greg