Wicket ajax 控件更新行为重叠

Wicket ajax controls update bahaviours are overlapped

我在 TextField 和 AjaxButton 上有两个 Wicket Ajax 更新行为。

textField.add(AjaxFormComponentUpdatingBehavior("onchange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            onTextFieldUpdate();
        }
    });
    ajaxButton = new AjaxButton("accept"){
        @Override
        protected void onSubmit(AjaxRequestTarget target, Form form) {
            onAjaxSubmited();
        }    
    });

我有 2 个进程:

如果我理解正确,那么你想要的只是有条件地执行你在文本字段 onchange 中所做的代码。或者您可以在 onchange 中设置一些标志并使用它来控制按钮提交中的内容。

只是我的意见;试图阻止按钮单击时的更改行为似乎令人困惑。从设计的角度来看,似乎控制流需要在您对文本字段进行任何操作之前。

您可以对 AjaxFormComponentUpdatingBehavior 和 AjaxButton 使用 AjaxRequestAttributes。参见 http://wicketinaction.com/2012/07/wicket-6-javascript-improvements/

我的想法是:

  • 行为:attributes.setThrottleSettings(几毫秒)。这样 'change' 事件将在 'some millis'
  • 之后触发
  • 按钮:attributes.getAjaxCallListeners().add(new AjaxCallListener().onBeforeSend("$('#txtField').data('suppress', true)"))
  • 行为:attributes.getAjaxCallListeners().add(new AjaxCallListener().onPrecondition("return $('#txtField').data('suppress')"))

希望你关注我。有关详细信息,请参阅 https://ci.apache.org/projects/wicket/guide/7.x/guide/ajax.html#ajax_5