Spring REST 按特定顺序@RequestBody验证,并且仅对组必填字段之一进行验证



比方说,我在控制器的输入方法中使用@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 - 无需验证其他任何内容。只需返回错误消息。

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

相关内容

  • 没有找到相关文章

最新更新