同一属性上的不同 Hibernate 验证注释

Mah*_*leh 4 hibernate hibernate-validator

我在 bean 中的属性上使用两个验证注释:

@NotEmpty(message = "{name.required}")
@Pattern(regex = "^([A-Za-z0-9]{2,}(\\-[a-zA-Z0-9])?)$", message = "{invalid.name}")
private String name;
Run Code Online (Sandbox Code Playgroud)

如果我将名称留空,则会出现两个错误,但我只想要第一个错误消息(如果出现第一个条件,则显示其错误消息,然后跳过第二个条件)。

dir*_*ira 5

如果第一个条件发生,则显示其错误消息,然后跳过第二个条件

这可以通过创建复合约束并使用 @ReportAsSingleViolation 元约束对其进行注释来完成。

用户名.java

@ReportAsSingleViolation
@NotEmpty
@Pattern(regexp="^([A-Za-z0-9]{2,}(\\-[a-zA-Z0-9])?)$")
@Constraint(validatedBy = {})
public @interface UserName {
    String message() default "invalid userName!";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}
Run Code Online (Sandbox Code Playgroud)

参考3.2。约束组合

  • 这些@NotEmpty和@Pattern注释的顺序是否被忽略?它们是否在自定义约束之前运行? (2认同)