今天做Spring mvc REST风格的crud时,在springmvc 表单标签 遇到了400的问题
错误代码:
HTTP Status 400 -
type Status report
message
description The request sent by the client was syntactically incorrect.
Apache Tomcat/7.0.47
原因:
400 请求出错
由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。
在 SpringMVC 中的 Action 中处理前台 ajax 请求传过来的 json 数据直接转成对应的实体类时出错:
400 Bad Request,后台也不报错,400指的的是请求无效(请求有语法问题或者不能满足请求)。
解决办法:
检查实体类的 javabean 里边的类型是否和 springmvc form 的 form 表单名是否一致。
我的错误原因是两个关联的实体类导致在 form 表单中 name 名称不一致:
Employee.java
private Integer id;
private String lastName;
private String email;
private int gender;
private Department department;
//无参构造方法以省略
//有参构造方法以省略
//setter 和 getter 方法以省略
Department.java
private Integer id;
private String departmentName;
//无参构造方法以省略
//有参构造方法以省略
//setter 和 getter 方法以省略
form 表单:
LastName:
Email:
Gender:
Department:
把 path="department" 改为 path="department.id"
原因:指明itemValue的这个id 时 employee.department.id 而不能是 employee.department
path要正确配置,支持级联属性