Spring REST @RequestBody 按特定顺序验证,并且只有一个组必填字段
Spring REST @RequestBody validation in specific order and only one of group mandatory fields
可以说,我有下面的 bean,我使用 @RequestBody
进入我的控制器的入口方法
public class MyRequestBean extends RequestBean {
private static final long serialVersionUID = 1L;
private String lastName ;
private String firstName ;
private String ssnNumber;
private String groupCd;
}
我已经把 @Valid
放在入口点方法 - @RequestBody
旁边。
我正在努力实现两件事,
ssnNumber
是绝对必填字段 - 如果它为空或 null - 无需验证任何其他内容。只是 return 错误信息。
如果 ssnNumber
有效,请查看三个字段中的任何一个 - firstName
、lastName
和 groupCd
与 [=21] 是否有效=] & @NotEmpty
。如果存在任何字段,则处理请求。
我怎样才能做到这一点?
我将这两个依赖项用于验证目的,
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
验证 API 是 - 1.1.0.Final & Hibernate Validator 是 - 5.3.4.Final
编辑: 可能重复 link 正在谈论 JSON 字段顺序。就我而言,字段顺序无关紧要。它关于现场验证顺序。我错过了什么吗?
我没有找到使用注释来完成此操作的方法,即使用注释进行订单字段验证。
我不得不最终编写我的自定义验证器 class- MyValidator
通过实现 - org.springframework.validation.Validator
并在那里编写我的有序逻辑,然后在控制器中为该控制器添加该验证器 class,
@InitBinder
public void globalInitBinder(WebDataBinder binder) {
binder.addValidators(new MyValidator());
}
可以说,我有下面的 bean,我使用 @RequestBody
public class MyRequestBean extends RequestBean {
private static final long serialVersionUID = 1L;
private String lastName ;
private String firstName ;
private String ssnNumber;
private String groupCd;
}
我已经把 @Valid
放在入口点方法 - @RequestBody
旁边。
我正在努力实现两件事,
ssnNumber
是绝对必填字段 - 如果它为空或 null - 无需验证任何其他内容。只是 return 错误信息。如果
ssnNumber
有效,请查看三个字段中的任何一个 -firstName
、lastName
和groupCd
与 [=21] 是否有效=] &@NotEmpty
。如果存在任何字段,则处理请求。
我怎样才能做到这一点?
我将这两个依赖项用于验证目的,
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
验证 API 是 - 1.1.0.Final & Hibernate Validator 是 - 5.3.4.Final
编辑: 可能重复 link 正在谈论 JSON 字段顺序。就我而言,字段顺序无关紧要。它关于现场验证顺序。我错过了什么吗?
我没有找到使用注释来完成此操作的方法,即使用注释进行订单字段验证。
我不得不最终编写我的自定义验证器 class- MyValidator
通过实现 - org.springframework.validation.Validator
并在那里编写我的有序逻辑,然后在控制器中为该控制器添加该验证器 class,
@InitBinder
public void globalInitBinder(WebDataBinder binder) {
binder.addValidators(new MyValidator());
}