我有一个包含许多输入字段的表单,需要处理对任何输入字段的更改;所以我在表单中添加AjaxEventBehavior
,例如:
Form<MyX> myForm = new Form<>("X", getModel());
myForm.add(new AjaxEventBehavior("onchange") {
@Override
protected void onEvent(AjaxRequestTarget target) {
handleFormChange(...);
}
});
每次我更改表单输入字段中的某些内容时,都会调用方法handleFormChange
。但是模型没有使用表单中已更改的输入字段的新值进行更新。
如何获得模型更新?我试过了AjaxFormComponentUpdatingBehavior
。它会更新模型,但我不能将它用于表单,仅适用于FormComponents
。
有人有想法如何处理吗? TIA!
答案 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}}