为类成员扩展 Spring Bean 验证

问题描述

我有一个 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 类的类成员的验证?

解决方法

还将 @Valid 注释添加到 msgDetails 类中的 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;

    @Valid // << ----
    private MsgDetails msgDetails;
}