Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wicket Ajax Keyevent_Wicket_Wicket 1.6 - Fatal编程技术网

Wicket Ajax Keyevent

Wicket Ajax Keyevent,wicket,wicket-1.6,Wicket,Wicket 1.6,我是Wicket的新手,我想创建一个ajax行为,在按下Functionkey时调用我的Java代码 我的想法是创建一种行为,将一些Javascript发送到浏览器,只有F键才会导致ajax回调 公共类主页扩展网页{ 公共主页(最终页面参数){ 超级(参数); 添加(新的AbstractDefaultAjaxBehavior(){ @凌驾 受保护的无效响应(AjaxRequestTarget目标){ //从请求中检索参数值 最终请求=RequestCycle.get().getRequest()

我是Wicket的新手,我想创建一个ajax行为,在按下Functionkey时调用我的Java代码

我的想法是创建一种行为,将一些Javascript发送到浏览器,只有F键才会导致ajax回调

公共类主页扩展网页{
公共主页(最终页面参数){
超级(参数);
添加(新的AbstractDefaultAjaxBehavior(){
@凌驾
受保护的无效响应(AjaxRequestTarget目标){
//从请求中检索参数值
最终请求=RequestCycle.get().getRequest();
最后一个字符串jsKeycode=request.getRequestParameters()
.getParameterValue(“keycode”).toString(“”);
//测试输出
appendJavaScript(“警报('from wicket ajax.you pressed“+jsKeycode+”)”);
}
@凌驾
public void renderHead(组件组件,IHeaderResponse响应){
super.renderHead(组件、响应);
//追加JavaScriptcode
response.render(OnDomReadyHeaderItem.forScript(
“\n\n”+
“$(文档).keydown(”+
函数(事件){\n+//120121 F9和F10的示例
“如果((event.keyCode==120)| |(event.keyCode==121)){\n”+
“event.preventDefault();\n”+
“窗口。警报('F键按下');\n”+
//使用keyCode执行ajax回调
“}\n”+
“});\n”);
}
});
现在我的问题是:
我必须编写的代码是,ajax回调将使用按键代码作为参数执行的?

您应该使用


}osmdamv给我提示,为我的问题找到“Wicketsolution”。下面是我的代码,用于捕捉按键并仅在某些情况下向wicketserver发送ajaxrequest

在这个示例中,其他用户应该可以根据自己的需要修改此代码

公共主页(最终页面参数){
超级(参数);
添加(新的AjaxEventBehavior(“向下键”){
@凌驾
受保护的void updateAjaxAttributes(AjaxRequestAttributes){
super.updateAjaxAttributes(attributes);
IAjaxCallListener=new AjaxCallListener(){
@凌驾
公共字符序列GetPremission(组件){
//此javascript代码评估是否需要ajaxcall。
//此处仅适用于F9和F10的keyocdes
return“var keycode=Wicket.Event.keycode(attrs.Event);”+
“如果((键码==120)| |(键码==121))”+
“返回真值;”+
“其他”+
“返回错误;”;
}
};
attributes.getAjaxCallListeners().add(listener);
//将按下的键代码附加到ajaxrequest
attributes.getDynamicExtraParameters()
.add(“var eventKeycode=Wicket.Event.keyCode(attrs.Event);”+
“返回{keycode:eventKeycode};”;
//在没有设置的情况下,键盘事件不会到达任何输入字段
attributes.setAllowDefault(true);
}
@凌驾
受保护的void onEvent(AjaxRequestTarget目标){
//从RequestCycle中提取keycode参数
最终请求=RequestCycle.get().getRequest();
最后一个字符串jsKeycode=request.getRequestParameters()
.getParameterValue(“keycode”).toString(“”);
appendJavaScript(“警报('from wicket ajax.you pressed“+jsKeycode+”)”);
}
});
编辑:

我插入了attributes.setAllowDefault(true)。现在它工作正常了

  @Override
  protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
  {
      super.updateAjaxAttributes(AjaxRequestAttributes attributes);

      IAjaxCallListener listener = new IAjaxCallListener()
      {
         @Override
         public CharSequence getBeforeHandler(Component c) { return handler; }
        .....
   };

  attributes.getAjaxCallListeners().add(listener);