Vous ne devez pas utiliser AjaxFormComponentUpdatingBehavior si vous voulez capturer des clés. Ce comportement est réservé aux actions qui mettent à jour le modèle de composant de formulaire. J'essaierais probablement de le faire uniquement dans javascript, surtout si vous utilisez un framework javascript comme mootools ou prototype. Voici quelques exemples de code pour Mootools (pas besoin de l'envoyer au serveur):
this.add(new TextField<String>("textField").add(new AbstractBehavior(){
private static final long serialVersionUID = 1L;
private Component component;
@Override
public void bind(final Component component){
this.component = component.setOutputMarkupId(true);
}
@Override
public void renderHead(final IHeaderResponse response){
response.renderOnDomReadyJavascript(
"$('" + this.component.getMarkupId() + "')" +
".addEvent('keyup',function(event){" +
"if(' '==event.key){" +
"alert('you pressed space!!!')" +
"}" +
"}" +
");");
};
}));
si aucune bibliothèque js est disponible, voici une solution de guichet seule:
@Override
public void renderHead(final IHeaderResponse response){
response.renderJavascriptReference(WicketEventReference.INSTANCE);
response.renderOnDomReadyJavascript("Wicket.Event.add('"
+ this.component.getMarkupId()
+ "',onkeyup',function(event){" + "if(' '==event.key){"
+ "alert('you pressed space!!!')" + "}" + "}" + ");");
};
mais cela ne gérer les problèmes de navigateur dans la gestion des événements
Si vous voulez vraiment envoyer chaque touche unique au serveur, oui. mais quel gaspillage de bande passante pour le faire. –