Уххх, это сложно, потому что привязка к форме не работает динамически.Это означает, что вы не можете сделать что-то, как @Viergelenker предлагает AND привязать каждый адрес-объект к его собственной форме.
Вы можете добавить в модель один адресный объект, например
model.addAttribute("address", addressObject); // Snippet for Model-object
modelAndView.addObject("address", addressObject); // Snippet for ModelAndView object
, а затем определить форму в шаблоне yout, например:
<form .... method=".." th:object="${address}">
<input type="hidden" th:field="*{id}" >
<input type="text" th:field="*{addressline1}" >
<input type="text" th:field="*{addressline2}" >
</form>
К сожалению, невозможно добавить массив или список в модель и привязать каждый объект в этой коллекции к его собственной форме.:
/* The following code doesn't work */
<th:block th:each="address : ${addresses}">
<form .... method=".." th:object="${address}">
<input type="text" th:field="*{addressline1}" >
...
</form>
</th:block>
или
/* The following code doesn't work */
<th:block th:each="address, stat : ${addresses}">
<form .... method=".." th:object="${addresses[__stat.index__]}">
<input type="text" th:field="*{addressline1}" >
...
</form>
</th:block>
Что вы можете сделать, это не использовать привязку формы, а просто отправить несколько пар имя-значение из форм без привязки (просто используйте имя иатрибуты th: value, а не атрибут th: field в ваших формах) для контроллера, получите их там из объекта HttpServletRequest и создайте / обновите / удалите адресные объекты ... или привяжите весь объект Vendor к форме (обратите внимание наиспользование stat.index):
<form th:object="${vendor}">
<input type="hidden" th:field="*{id}">
<input type="hidden" th:field="*{name}"> // feel free to make that field editable
<th:block th:each="addr, stat : *{address}">
<input type="hidden" th:field="*{address[__${stat.index}__].id}">
<input type="text" th:field="*{address[__${stat.index}__].addressline1}">
<input type="text" th:field="*{address[__${stat.index}__].addressline2}">
</th:block>
</form>