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 旁边。

我正在努力实现两件事,

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

  2. 如果 ssnNumber 有效,请查看三个字段中的任何一个 - firstNamelastNamegroupCd 与 [=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());
    }