在Spring Boot @PostMapping中是否有一种方法可以在将请求体映射到特定类之前检测传入请求体中的空字段?
我的post映射是这样的,
@PostMapping("/post")
public ResponseEntity<User> insertFromBody(
@Valid @RequestBody User user) {
//call service class
}
用户类
@Entity
@Table(name="Users")
public class User {
@Id
@JsonProperty("USER")
@Column(name = "USER")
private String userId;
@JsonProperty("FIRST_NAME")
@Column(name = "FIRST_NAME")
private String firstname;
@JsonProperty("LAST_NAME")
@Column(name = "LAST_NAME")
private String lastname;
@JsonProperty("AGE")
@Column(name = "AGE")
private String age;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
请求正文可以如下所示,
1st type
{
"ID":1,
"FIRST_NAME":"JOHN"
}
2nd type
{
"ID":1,
"FIRST_NAME":"JOHN",
"LAST_NAME":null,
"AGE":null
}
所以在映射请求体到User对象之前,有一种方法来检测空字段吗?(想要区分请求类型1和2)
- add dependency "org.springframework.boot:spring.boot.starter.validation">
- 将
@NotNull
添加到非空字段 - 添加
@Valid
是的,使用@NotNull
和@Valid
,它将抛出一个异常,所以我建议使用异常处理程序来格式化消息。下面是一篇如何使用Validator