写在前面
上午碰到一个问题。使用 @RequestBody
接收 json 字符串参数,controller
接收到的参数一直为空。但是自己写的例子就没问题。最后相互对比是接收参数的对象有问题,却一直找不到原因。
找错
public class QueryStationReq {
private String LastQueryTime;
private int PageNo ;
private int PageSize ;
public String getLastQueryTime() {
return LastQueryTime;
}
public void setLastQueryTime(String lastQueryTime) {
LastQueryTime = lastQueryTime;
}
public int getPageNo() {
return PageNo;
}
public void setPageNo(int pageNo) {
PageNo = pageNo;
}
public int getPageSize() {
return PageSize;
}
public void setPageSize(int pageSize) {
PageSize = pageSize;
}
}
public class User {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
这是两个接收参数的对象,怎么也比较不出有什么区别,但是错绝对是这两个对象的原因。
区别在于 命名规则,对 你没看错 ,就是这个原因。
后面突然想起这事 Spring 的注入规则。说简单点大家发现没,其实不管我们的属性首字母是大写还是小写,比如 name
或者 Name
。它的 set 方法都是一样的。所以当使用 大写的属性时,Spring 无法判断这个属性到底是小写还是大写,这就无法注入赋值了。
这 艹 甲方,装 X 写的破文档,一点代码规范都没,听蛋疼的。
解决办法很简单,其实和处理 mapper 映射一样。见下
@JsonProperty(value = "LastQueryTime")
private String lastQueryTime;
本文由老郭种树原创,转载请注明:https://guozh.net/spring-requestbody-jieshouqingqiucanshuzhishikongjingtidaxiaoxiemingming/