【问题标题】:Extend Spring Bean Validation for the class members为类成员扩展 Spring Bean 验证
【发布时间】:2021-07-27 11:31:22
【问题描述】:

我有一个 Spring Boot 应用程序,我正在使用 spring-boot-starter-validation 依赖项来验证 java bean。

我的控制器代码如下

@PostMapping("/testMessage")
    ResponseEntity<String> testMethod(@Valid @RequestBody InternalMsg internalMsg) {
        return ResponseEntity.ok("Valid Message");
    }

InternalMsg 类

public class InternalMsg implements Serializable {
    @NotNull(message = "Msg Num is a required field")
    private String msgNumber;
    @NotNull(message = "Activity Name is a required field")
    private String activityName;
    private MsgDetails msgDetails;
}

InternalMsg 中提到的约束运行良好。但是在 MsgDetails 类上指定的约束不起作用。

MsgDetails 类

public class MsgDetails {
    @NotNull(message = "Message Source Name should not be null")
    private String msgSourceName;
    @NotBlank(message = "Message Source ID should not be empty")
    private String msgSourceId;
}

是否有任何选项可以扩展 InternalMsg 类的类成员的验证?

【问题讨论】:

    标签: java spring spring-boot spring-boot-starter


    【解决方案1】:

    InternalMsg 类的msgDetails 字段中添加@Valid 注释:

    public class InternalMsg implements Serializable {
        @NotNull(message = "Msg Num is a required field")
        private String msgNumber;
        @NotNull(message = "Activity Name is a required field")
        private String activityName;
    
        @Valid // << ----
        private MsgDetails msgDetails;
    }
    

    【讨论】: