如何使用Wicket和AJAX使用模型更新来处理表单中的更改

时间:2014-01-09 23:00:28

标签: ajax forms model wicket

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

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

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

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

有人有想法如何处理吗? TIA!

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

首先进行更改使用专用OnChangeAjaxBehavior

然后,您可以使用Iterator form来获取所有孩子,然后添加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(...); } }); } } 在这样的每一个变化:

{{1}}