Spring MVC - 提交带下拉列表的表单时缺少字段的HTTP状态代码400(错误请求)

时间:2016-06-06 11:29:51

标签: spring-mvc thymeleaf

我使用带有百万富翁的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个错误请求。

1 个答案:

答案 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.