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

Java Spring REST@RequestBody验证按特定顺序进行,并且只有一个组必填字段,java,bean-validation,hibernate-validator,spring-restcontroller,spring-rest,Java,Bean Validation,Hibernate Validator,Spring Restcontroller,Spring Rest,比方说,我在控制器的输入方法中使用@RequestBody public class MyRequestBean extends RequestBean { private static final long serialVersionUID = 1L; private String lastName ; private String firstName ; private String ssnNumber; private String groupC

比方说,我在控制器的输入方法中使用
@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>
    
    
    javax.validation
    验证api
    org.hibernate
    休眠验证器
    
    验证API是-1.1.0.Final&Hibernate验证程序是-5.3.4.Final


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

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

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

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

    它的可能重复不是重复,JSON字段顺序如何与请求bean验证相关?我错过什么了吗?