比方说,我在控制器的输入方法中使用@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 - 无需验证其他任何内容。只需返回错误消息。如果
ssnNumber
有效,请查看三个字段中的任何一个 -firstName
,lastName
和groupCd
是否对@NotNull
和@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 is - 5.3.4.Final
编辑:可能的重复链接正在谈论JSON字段顺序。就我而言,字段顺序无关紧要。它关于字段验证顺序。我错过了什么吗?
我没有找到使用注释的方法,即使用注释进行订单字段验证。
我最终不得不编写我的自定义验证器类 - MyValidator
通过实现 - org.springframework.validation.Validator
并在那里编写我的有序逻辑,然后在控制器类中为该控制器添加该验证器,
@InitBinder
public void globalInitBinder(WebDataBinder binder) {
binder.addValidators(new MyValidator());
}