Wicket AjaxCallListener getPrecondition 方法不起作用

Wicket AjaxCallListener getPrecondition method doesn't work

我正在使用 AjaxLink,我想在某些情况下停止它的 "onClick" 方法执行。一个解决方案是 class 称为 "AjaxCallListener",它有方法 "getPrecondition()",您可以在其中调用任何您的 javascript 函数并且结果是否为 "false",然后 AjaxLink 的 "onClick" 不执行。此 "AjaxCallListener" 添加到 ajaxRequest 的属性中。

@Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
    attributes.getAjaxCallListeners().add(new AjaxCallListener() {
        @Override public CharSequence getPrecondition(Component component) {
            return "isPropagationAllowed();";
        }
    });
}

然后在我们的 js 文件中的某处:

function isPropagationAllowed() { alert('function called') return false; }

警报已调用,但服务器上的进一步执行仍然有效。

你应该写 "return ${functionName}()" 作为 "getPrecondition" 方法的结果:

@Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
attributes.getAjaxCallListeners().add(new AjaxCallListener() {
        @Override public CharSequence getPrecondition(Component component) {
            return "return isPropagationAllowed()";
        }
    });
}