Java 基于Spring自定义条件的验证

Java 基于Spring自定义条件的验证,java,spring,spring-mvc,spring-boot,spring-validator,Java,Spring,Spring Mvc,Spring Boot,Spring Validator,我想在SpringValidator中创建基于条件的验证。 我有一个UserDTO类,因为有两个DTO类带有@Valid注释 如果我通过了isPrimarytrue,那么它应该只验证primaryDTObean,而忽略secendoryDTO验证 public class UserDTO { @Valid private PrimaryDTO primaryDTO; @Valid private SecendoryDTO secendoryDTO; pri

我想在SpringValidator中创建基于条件的验证。 我有一个UserDTO类,因为有两个DTO类带有
@Valid
注释

如果我通过了isPrimary
true
,那么它应该只验证primaryDTObean,而忽略secendoryDTO验证

public class UserDTO {
    @Valid
    private PrimaryDTO primaryDTO;
    @Valid
    private SecendoryDTO secendoryDTO;
    private boolean isPrimary;
}

public class PrimaryDTO {
    @NotEmpty(message = "Please enter email.")
    @Email(message = "Please enter a valid email.")
    private String email;
}

public class SecendoryDTO {
    @NotEmpty(message = "Please enter phone.")
    private String phone;
}
请导游


谢谢

如果您的验证依赖于多个字段(例如,
isPrimary
primaryDTO
secondaryDTO
),那么唯一的解决方案就是在类级别(
UserDTO
)编写一个自定义验证程序,它将实现条件验证本身

例如,创建注释:

@已记录
@保留(运行时)
@目标({注释类型,类型})
@约束(validatedBy=SecondaryValidator.class)
public@interface ValidSecondary{
字符串消息()默认为“无效的辅助”;
类[]组()默认值{};

类如果您的验证依赖于多个字段(例如
isPrimary
primaryDTO
secondaryDTO
),那么唯一的解决方案是在类级别(
UserDTO
)编写一个自定义验证器,它将实现条件验证本身

例如,创建注释:

@已记录
@保留(运行时)
@目标({注释类型,类型})
@约束(validatedBy=SecondaryValidator.class)
public@interface ValidSecondary{
字符串消息()默认为“无效的辅助”;
类[]组()默认值{};

ClassI收到一个错误,原因是:java.lang.NoSuchMethodException:SecondaryValidator。()在此类中
SecondaryValidator
@ParthSolanki您可能应该将
@Autowired
添加到构造函数中。我收到一个错误,原因是:java.lang.NoSuchMethodException:SecondaryValidator。()在这个类中,您可能应该将
@Autowired
添加到构造函数中。