На странице настроек через модель выводятся все настройки, который можно отредактировать прямо на этой форме. По нажатию на кнопку "Сохранить" выполняется POST-запрос. Однако из ModelAttribute возвращается только третий столбец (value), в остальных колонках передаются - null.
Контроллер:
@PostMapping("/save")
public String saveSettings(@ModelAttribute("settings") SettingsDTO settingsDTO, Model model) {
List<Setting> settings = settingsDTO.getSettings();
//вывод, какие данные получилось забрать
System.out.println("\n\n\n");
for (Setting setting : settings)
System.out.println(setting.getId() + " " + setting.getName() + " " + setting.getValue());
System.out.println("\n\n\n");
model.addAttribute("settings", settingsService.saveSettings(settingsDTO));
return "settings/index";
}
Thymeleaf страница:
<form method="post" th:action="@{'/settings/save/'}" th:object="${settings}" modelAttribute="settings">
<table class="table table-bordered">
<thead>
<tr>
<th>#</th>
<th>Название настройки</th>
<th>Значение</th>
<th>Действия</th>
</tr>
</thead>
<tbody>
<tr class="Authors-item" th:each="setting, item : *{settings}" >
<td th:text="*{settings[__${item.index}__].id}">Id</td>
<td><input disabled th:field="*{settings[__${item.index}__].name}"></td>
<td><input th:field="*{settings[__${item.index}__].value}"></td>
<td><a th:href="@{/settings/delete/{id}(id=${setting.id})}" href="#">Удалить</a></td>
</tr>
</tbody>
</table>
<input type="submit" class="btn btn-block btn-primary btn-lg font-weight-medium auth-form-btn" value="СОХРАНИТЬ">
</form>
Подскажите, почему ModelAttribute не возвращает все значения с формы?