【问题标题】:Validatng enums in Spring validation在 Spring 验证中验证枚举
【发布时间】:2021-03-31 20:39:26
【问题描述】:

我正在从 Spring 控制器进行请求参数验证。我有一个枚举验证器,类似于https://funofprograming.wordpress.com/2016/09/29/java-enum-validator/,如果枚举字段直接位于我用于验证的对象中,它可以正常工作。但如果该对象包含其他对象,则它不起作用。

例如这里是Controller中的请求

@PostMapping("/")
    public ResponseEntity<?> performOperation(@Valid @RequestBody MyModel model) {

这是我用来验证请求参数的模型

@ApiModel
public class MyModel {
   @ApiModelProperty
   @EnumValueValidator(enumClass = EnumName.class)
   public String provider;

   MyObject obj;
}

public class MyObject {
   @EnumValueValidator(enumClass = SomeEnum.class)
   public String anotherEnum;
}

在上面的示例中,provider 的验证没有问题。但anotherEnum 不是。 Spring 模型有没有办法对对象进行深度验证?

【问题讨论】:

    标签: spring spring-boot validation enums


    【解决方案1】:

    您也应该使用@Valid 注释来注释MyObject obj。请记住,null 对象未经过验证,因此您可能应该同时执行以下操作:

    @NotNull
    @Valid
    MyObject obj;
    

    【讨论】:

    • 谢谢,我试试
    • 完美运行。谢谢你。你介意我让你看看stackoverflow.com/questions/66891935/…吗?我遇到了与嵌套验证器相关的问题,我想在其中展平顶层,而不是较低级别。
    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2014-10-25
    • 2017-12-14
    • 2017-07-03
    相关资源
    最近更新 更多