Wicket - AjaxEventBehavior未正确呈现

时间:2015-06-09 14:27:25

标签: java wicket

请看下面的代码段。

   add(new AjaxEventBehavior("onclick") {

        private boolean toggle = false;

        @Override
        protected void onEvent(AjaxRequestTarget target)
        {
            log.debug("onEvent: " + toggle);
            if (toggle)
            {
                toggle = false;
                target.prependJavaScript("toogle(true)");
            } 
            else
            {
                toggle = true;
                target.prependJavaScript("toogle(false)");
            }
         }        
     });

但是在页面呈现[没有错误,警告]之后,我看不到与DOM关联的事件[通过firebug验证]。甚至从未打印过调试日志。

wicket中是否有任何选项可以验证是否添加了行为?

3 个答案:

答案 0 :(得分:0)

您应该迭代添加到此组件的行为,以验证您的行为已添加:

for (Behavior behavior : component.getBehaviors()) {
    if(AjaxEventBehavior.class.equals(behavior.getClass())) {
        // it works    
    }
}

答案 1 :(得分:0)

如果附加的组件不可见或禁用,则该行为不会贡献其JavaScript。

BTW您的prependJavaScript()个来电都使用相同的内容toggle(true)

答案 2 :(得分:0)

你应该(几乎)从不在你的标记中使用HTML ID:

对于Wicket,这些ID优先于生成的唯一标记ID。如果id在页面上多次出现(例如,如果多次使用组件),则所有Ajax处理程序将附加到具有该id的第一个标记标记。