请看下面的代码段。
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中是否有任何选项可以验证是否添加了行为?
答案 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的第一个标记标记。