实体类的属性名是大写,所以传递的参数跟他对应,结果springboot拿到的参数全部是null。
原因是参数首字母大写导致,看下面代码s
entity
@Data
public class User {
private Integer UserId;
private String UserName;
private String UserPassword;
private String Name;
private Integer RoleId;
private String RoleName;
private String Department;
private int Status;
}
controller
@PostMapping("/register")
public User UserRegister(@RequestBody User user){
System.out.println(user);
return user;
}
传递参数格式json
{
"UserName":"admin",
"UserPassword":"12345",
"RoleId":1,
"RoleName":"未定义",
"Department":"未定义",
"Name":"未定义"
}
拿到的结果全部为null
1.解决:把参数名首字母全部改为小写,就可以正常拿到参数了
{
"userName":"admin",
"userPassword":"12345",
"roleId":1,
"roleName":"未定义",
"department":"未定义",
"name":"未定义"
}
2.解决:给实体类加上 @JsonProperty("xxx")的标签,这样参数格式需要改为与@JsonProperty("xxx")内容一致
private Integer UserId;
@JsonProperty("UserName")
private String UserName;
@JsonProperty("UserPassword")
private String UserPassword;
@JsonProperty("Name")
private String Name;
@JsonProperty("RoleId")
private Integer RoleId;
@JsonProperty("RoleName")
private String RoleName;
@JsonProperty("Department")
private String Department;
@JsonProperty("Status")
private int Status;
{
"UserName":"admin",
"UserPassword":"12345",
"RoleId":1,
"RoleName":"未定义",
"Department":"未定义",
"Name":"未定义"
}
两种方法都可以解决