У меня довольно большая и сложная форма, которая содержит много компонентов формы.
В одном из раскрывающихся полей я добавил AjaxFormComponentUpdatingBehavior
для обработки изменений в раскрывающемся списке. На основании этих изменений я обновляю некоторые другие поля в форме следующим образом:
masterFooDropDown.add(new AjaxFormComponentUpdatingBehavior("change") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
String value = (String) getFormComponent().getModelObject();
if (value != null) {
for (Foo foo: form.getModelObject().getFoos()) {
foo.setValue(value);
}
target.add(form);
}
}
});
Поля Foo корректно обновляются со значением из выпадающего списка.
Проблема в том, что любые изменения в других текстовых полях формы удаляются. Я понимаю, что это происходит, так как они не были обновлены в модели.
Как я могу решить это?
Могу ли я сделать так, чтобы все заполненные данные в форме до сих пор записывались в модель (без отправки формы)?
Мне нужно добавить целевую форму к цели в методе ajax, поскольку поля, которые должны быть обновлены, являются потомками объекта модели формы и добавляются в форму динамически. Например, я не могу сделать target.add(fooFieldX)
, так как может быть любое количество «fooFields».