问题再现:1.使用了Lombok的@Data 2.字段驼峰命名不规范
实体类:
后端断点调试:可以看到字段命名是没问题的
前端页面显示:发现驼峰命名的personId能正确显示,而pName显示不出来
查看浏览器:pName变成了pname
原因:Lombok的@Data生成的get、set方法会把JavaBean的首字母变成大写
@Data
public class Person{
private String pName;
//lombok帮你生成的
public String getPName() {
return pName;
}
//lombok帮你生成的
public void setPName(String pName) {
this.pName = pName;
}
//最后通过lombok得到pname,导致前端代码对应不上,显示不出来
}
解决方法:
1.去掉@Data,手动生成get、set方法,生成的get、set方法是这样的,这是idea生成get、set方法的方式
public Long getPersonId() {
return personId;
}
public void setPersonId(Long personId) {
this.personId = personId;
}
public String getpName() {
return pName;
}
public void setpName(String pName) {
this.pName = pName;
}
2.给字段添加@JsonProperty(“字段名”),指定命名。spring默认使用的是jackson处理json的序列化和反序列化,@JsonProperty是Jackson的注解,作用在属性上,将属性名称序列化为另一个名称
@JsonProperty("pName")
private String pName;
总结:使用规范驼峰命名,能避免很多问题,一个bug找很久