Java Wicket-AjaxEventBehavior未正确呈现

Java Wicket-AjaxEventBehavior未正确呈现,java,wicket,Java,Wicket,请看下面的代码片段 add(new AjaxEventBehavior("onclick") { private boolean toggle = false; @Override protected void onEvent(AjaxRequestTarget target) { log.debug("onEvent: " + toggle); if (toggle)

请看下面的代码片段

   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中是否有任何选项来验证是否添加了行为?

您应该迭代添加到此组件的trougth行为,以验证是否添加了您的行为:

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

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


顺便说一句,您的两个prependJavaScript调用都使用相同的内容toggletrue。

您的标记中几乎不应该有HTML ID:


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

Wicket使用事件注册,因此您不会在html中找到“onclick”属性。检查组件的标记标记,是否为?否。它只是附加在从匹配的html标记元素中删除属性id下,解决了这个问题,现在我可以看到行为被正确附加。任何人,知道核心发生了什么吗?你的标记中不应该有HTML id:对于Wicket,这些id优先于生成的标记id。有一个快捷方式:component.getBehaviorsAjaxEventBehavior.classI我现在已经编辑了js,实际上组件是附加的并且可见的。只有在某些情况下,我找不到行为是附加的,这应该是由于一些代码重叠造成的。