0
在stackoverflow我发现Wicket一些代码应该响应用户的按键在页面上;我只做了一些适应。问题是,当用户按下页面上的某些键时,从不会调用updateAjaxAttributes方法和onEvent方法。代码如下:updateAjaxAttributes永远不会被调用
add(new AjaxEventBehavior("keydown")
{
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
IAjaxCallListener listener = new AjaxCallListener(){
@Override
public CharSequence getPrecondition(Component component) {
//this javascript code evaluates wether an ajaxcall is necessary.
//Here only by keyocdes for TAB and ENTER
return "var keycode = Wicket.Event.keyCode(attrs.event);" +
"if ((keycode == 9) || (keycode == 13))" +
" return true;" +
"else" +
" return false;";
}
};
attributes.getAjaxCallListeners().add(listener);
//Append the pressed keycode to the ajaxrequest
attributes.getDynamicExtraParameters()
.add("var eventKeycode = Wicket.Event.keyCode(attrs.event);" +
"return {keycode: eventKeycode};");
//whithout setting, no keyboard events will reach any inputfield
attributes.setAllowDefault(true);
}
@Override
protected void onEvent(AjaxRequestTarget target) {
//Extract the keycode parameter from RequestCycle
final Request request = RequestCycle.get().getRequest();
final String jsKeycode = request.getRequestParameters()
.getParameterValue("keycode").toString("");
target.appendJavaScript("alert('from wicket ajax. you pressed "+jsKeycode+"')");
}
});
有人能告诉我为什么这些方法从来没有被调用,并给我写一些工作代码? 由于提前, 彼得
看起来不错,你怎么知道的方法不叫? – svenmeier