Я использую Spring Boot (v2.0.1.RELEASE) . У меня проблема в шаблоне HTML, я пытаюсь отправить 2 разных объекта в форме контроллеру. Все атрибуты объектов формы отправляются успешно, за исключением атрибута ID обоих. Оба имеют поле с именем ID, которое перезаписывается при поступлении в контроллер.
То есть форма в HTML:
<form action="#" th:action="@{/test}" method="post" class="form floating-label">
<div class="form-group">
<!-- TEST VARIABLES -->
<input type="text" th:field="${test.id}" class="form-control"/>
<input type="text" th:field="${test.nombre}" class="form-control"/>
<input type="text" th:field="${test.formatotest.id}" class="form-control"/>
<input type="text" th:field="${test.formatotest.nombre}" class="form-control"/>
<input type="text" th:field="${test.activo}" class="form-control"/>
<!-- USER VARIABLES-->
<input type="text" th:field="${user.id}" class="form-control"/>
<input type="text" th:field="${user.email}" class="form-control"/>
<input type="text" th:field="${user.username}" class="form-control"/>
</div>
<div>
<input type="submit" value="Send" class="btn btn-primary btn-raised" />
</div>
<br>
</form>
Функция контроллера:
@PostMapping("/test")
public ModelAndView showTest(Test test, User user) {
System.out.println(" * User ID: ["+user.getId()+"] Test ID:["+test.getId()+"]");
ModelAndView testModel = new ModelAndView("test");
testModel.addObject("user",user);
testModel.addObject("test",test);
return testModel;
}
Когда я печатаю оба идентификатора, они отображаются одинаково для них обоих. Я попытался использовать th: value, name nad id вместо th: field, и он все еще не удался.
Вторая попытка формы HTML:
<form action="#" th:action="@{/test}" method="post" class="form floating-label">
<div class="form-group">
<!-- TEST VARIABLES -->
<input type="hidden" th:value="${test.id}" name="id" id="id" class="form-control"/>
<input type="hidden" th:value="${test.nombre}" name="nombre" id="nombre" class="form-control"/>
<input type="hidden" th:value="${test.formatotest.id}" name="formatotest.id" id="formatotest.id" class="form-control"/>
<input type="hidden" th:value="${test.formatotest.nombre}" name="formatotest.nombre" id="formatotest.nombre" class="form-control"/>
<input type="hidden" th:value="${test.activo}" name="activo" id="activo" class="form-control"/>
<!-- USER VARIABLES-->
<input type="hidden" th:value="${user.id}" name="id" id="id" class="form-control"/>
<input type="hidden" th:value="${user.email}" name="email" id="email" class="form-control"/>
<input type="hidden" th:value="${user.username}" name="username}" id="username" class="form-control"/>
</div>
<div>
<input type="submit" value="Send" class="btn btn-primary btn-raised" />
</div>
<br>
</form>
Любопытно, что это зависит от того, какой вход я поставлю первым в HTML, который будет установлен для них обоих.