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,实际上组件是附加的并且可见的。只有在某些情况下,我找不到行为是附加的,这应该是由于一些代码重叠造成的。