2013-12-10 55 views
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+"')"); 
     } 
    }); 

有人能告诉我为什么这些方法从来没有被调用,并给我写一些工作代码? 由于提前, 彼得

+0

看起来不错,你怎么知道的方法不叫? – svenmeier

回答

1

附加(新AjaxEventBehavior( “onkeydown事件”)

“的onkeydown” 需要

相关问题