Spring REST @RequestBody以特定顺序验证,并且只有一个组必填字段

时间:2017-05-09 07:14:55

标签: java bean-validation hibernate-validator spring-restcontroller spring-rest

让我们说,我使用@RequestBody

进入我的Controller的输入法中的bean下面
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旁边的入口点方法中。

我正在努力实现两件事,

  1. ssnNumber是绝对必填字段 - 如果为空或null - 无需验证任何其他内容。只需返回错误消息。

  2. 如果ssnNumber有效,请查看以下三个字段中的任何一个字段firstNamelastNamegroupCd是否对@NotNull& @NotEmpty。如果存在任何字段,请处理该请求。

  3. 我怎样才能做到这一点?

    我正在使用这两个依赖项进行验证,

    <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 &amp; Hibernate Validator是 - 5.3.4.Final

    编辑:可能重复的链接是在讨论JSON字段顺序。就我而言,字段顺序并不重要。它关于字段验证顺序。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我没有找到一种方法来进行注释,即带注释的订单字段验证。

我必须通过实现 - MyValidator并在那里编写我的有序逻辑然后在控制器类中为该控制器添加该验证器来编写我的自定义验证器类org.springframework.validation.Validator

@InitBinder
    public void globalInitBinder(WebDataBinder binder) {
        binder.addValidators(new MyValidator());
    }