我使用带有百万富翁的spring mvc来保存带有下拉值的表单。问题是在保存时,只有当我将表单中的外键字段附加到th:field="studentTypeCode"
的下拉列表时,才会收到错误400错误请求。
<select id="typeSelect" class="text_box" th:field="*{studentTypeCode}">
<div th:each="studentTypeCode : ${studentTypeCodes}" th:remove="tag">
<option th:value="${studentTypeCode.typeId}" th:text="${studentTypeCode.typeName}" />
</div>
</select>
Student.java
public class Student{
private String name;
//... other fields
//..
StudentTypeCode studentTypeCode;
//getters and setters
}
在控制器中,我使用带有
的th:object
获取Student对象
@ModelAttribute Student student
param。由于字段studentTypeCode
未在请求中正确发送,因此保存表单会引发400个错误请求。
答案 0 :(得分:0)
我刚刚发现,因为我使用@ModelAttribute
,我只需要使用学生类型代码id将正确的值发送到Student对象。声明th:field="*{studentTypeCode.studentTypeId}"
会给我在下拉列表中选择的确切值(int),我可以保存此值。
以下代码,
<select id="typeSelect" class="text_box" th:field="*{studentTypeCode.studentTypeId}">
<div th:each="studentTypeCode : ${studentTypeCodes}" th:remove="tag">
<option th:value="${studentTypeCode.typeId}" th:text="${studentTypeCode.typeName}" />
</div>
</select>
解决了我的问题。同样在BindingResult error
@ModelAttribute field
之后添加@RequestMapping
。阅读更多this article.