Вы не должны использовать AjaxFormComponentUpdatingBehavior, если вы хотите захватить ключи.Это поведение зарезервировано для действий, которые обновляют модель компонента формы.Я, вероятно, попытался бы сделать это только на javascript, особенно если вы используете фреймворк javascript, такой как mootools или prototype.Вот пример кода для mootools (нет необходимости отправлять его на сервер):
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!!!')" +
"}" +
"}" +
");");
};
}));
, если библиотека js недоступна, вот решение только для калитки:
@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!!!')" + "}" + "}" + ");");
};
но это не касается кросс-браузерных проблем при обработке событий