@RequestBody接收实体类时,部分字段丢失的问题

9次阅读
没有评论

问题:

1.@RequestBody注解的实体类里,如果存在首字母为小写,第二个字母大写的字段时,此字段会传为null的bug。

private String tUser;

public String getTUser() {
	return tUser;
}
public void setTUser(String tUser) {
	this.tUser = tUser;
}

2.在IDEA中,布尔类型boolean/Boolean的isXXX变量,在自动生成getter和setter方法时,会去除is标识,如图所示。

private Boolean isSignUpAudit;

public Boolean getSignUpAudit() {
    return isSignUpAudit;
}

public void setSignUpAudit(Boolean signUpAudit) {
    isSignUpAudit = signUpAudit;
}

问题1解决方法:

 1、修改字段名

2、使用@JsonProperty注解,手动写get和set方法

@JsonProperty(value = "tUser")
private String tUser;

public String getTUser() {
	return tUser;
}

public void setTUser(String tUser) {
	this.tUser = tUser;
}

private String tUser;

@JsonProperty(value = "tUser")
public String getTUser() {
	return tUser;
}

@JsonProperty(value = "tUser")
public void setTUser(String tUser) {
	this.tUser = tUser;
}

3、重写get和set方法,第一个字母小写开头

private String tUser;

public String gettUser() {
    return tUser;
}

public void settUser(String tUser) {
    this.tUser = tUser;
}

问题2解决方法:

1、修改字段名

2、使用@JsonProperty注解,手动写get和set方法

@JsonProperty(value = "isSignUpAudit")
private Boolean isSignUpAudit;

public Boolean getSignUpAudit() {
    return isSignUpAudit;
}

public void setSignUpAudit(Boolean signUpAudit) {
    isSignUpAudit = signUpAudit;
}

private Boolean isSignUpAudit;

@JsonProperty(value = "isSignUpAudit")
public Boolean getSignUpAudit() {
    return isSignUpAudit;
}

@JsonProperty(value = "isSignUpAudit")
public void setSignUpAudit(Boolean signUpAudit) {
    isSignUpAudit = signUpAudit;
}

3、重写get和set方法,带上is开头

private Boolean isSignUpAudit;

public Boolean getIsSignUpAudit() {
	return isSignUpAudit;
}

public void setIsSignUpAudit(Boolean isSignUpAudit) {
	this.isSignUpAudit = isSignUpAudit;
}

正文完
 0