【问题标题】:How to handle changes in a form with a model-update using Wicket and AJAX如何使用 Wicket 和 AJAX 通过模型更新处理表单中的更改
【发布时间】:2014-01-09 23:00:28
【问题描述】:

我有一个包含许多输入字段的表单,并且需要处理对这些输入字段中的任何一个的更改;所以我在表单中添加了一个AjaxEventBehavior,比如:

Form<MyX> myForm = new Form<>("X", getModel());
myForm.add(new AjaxEventBehavior("onchange") {
    @Override
    protected void onEvent(AjaxRequestTarget target) {
         handleFormChange(...);
    }
});

每当我更改表单输入字段中的某些内容时,都会调用 handleFormChange 方法。但是模型并没有使用表单的已更改输入字段的新值进行更新。

如何获得这些模型更新?我试过AjaxFormComponentUpdatingBehavior。它更新了模型,但我不能将它用于表单,仅用于FormComponents

有人知道如何处理吗?蒂亚!

【问题讨论】:

    标签: ajax forms model wicket


    【解决方案1】:

    使用 AjaxFormSubmitBehavior,您可以在每次更改时提交整个表单。

    【讨论】:

      【解决方案2】:

      首先在更改时使用专用的OnChangeAjaxBehavior

      然后您可以使用formIterator 来获取所有孩子,然后将OnChangeAjaxBehavior 添加到所有FormComponents,这样每次更改都会调用您的handleFormChange()

          for (Iterator it = form.iterator(); it.hasNext();) {
              Object o = it.next();
              if (o instanceof FormComponent) {
                 ((FormComponent) o).add(new OnChangeAjaxBehavior() {
      
                     @Override
                     protected void onUpdate(AjaxRequestTarget target) {
                         handleFormChange(...);
                     }
                 });
              }
           } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-26
        相关资源
        最近更新 更多