Spring MVC中 提交表单报错400
背景:
在写SpringMVC表单提交的代码的时,在最后点击提交的时候总是会出现400的错误
原因:
主要原因就是表单提交的数据和对应实体类的属性无法完全匹配
解决方案:
查看我们提交的数据是否完全和对应的实体类进行完全的匹配,
我的示例代码:
实现的表单的截图:
表单中的代码:
<form:form action="emp" method="POST" modelAttribute="employee"> LastName:<form:input path="lastName"/> <br> Email:<form:input path="email"/> <br> <% Map<String,String> genders = new HashMap<>(); genders.put("1","Male"); genders.put("0","Female"); request.setAttribute("genders", genders); %> Gender: <br> <form:radiobuttons path="gender" items="${genders}" delimiter="<br>" /> <br> Department:<form:select path="department" items="${departments }" itemLabel="departmentName" itemValue="id"></form:select> <br> <input type="submit" value="Submit"/> </form:form>
对应实体类的代码:
public class Employee { private Integer id; private String lastName; private String email; //1 male, 0 female private Integer gender; private Department department; .................省略了对应的get和set方法,和有参无参构造器.................. }
通过以上信息我们可以看出问题是出在了表单中最后一项的department
前端页面显示的是department的名字,但是表单提交的是department的id,所有我们应该将:
path="department" 修改为:path="department.id"
出现这个问题的主要原因是我对 form:select 标签没有完全理解里面的属性和使用方法