一尘不染

Hibernate Validator-@Length-如何为min和max指定单独的消息?

java

我正在使用Hibernate验证程序在Web应用程序中进行表单验证。我将@Length注释用于我的String属性,如下所示:

@Length(min = 5, message = "The field must be at least 5 characters")
private String myString;

但是,如果String超过50个字符,则需要显示其他消息。有没有办法使用现成的@Length验证程序来执行此操作?我想做的一个例子(编译器不会让我)如下:

@Length(min = 5, message = "The field must be at least 5 characters")
@Length(max = 50, message = "The field must be less than 50 characters")
private String myString;

我已经尝试了@Max和@Min,但它们并没有执行我想要的操作。任何投入将不胜感激!


阅读 703

收藏
2020-12-03

共1个答案

一尘不染

您可以@Length使用内部列表注释(在Bean验证/休眠验证器中为每种约束类型定义的)在一个元素上指定多个约束,如下所示:

@List({
    @Length(min = 5, message = "The field must be at least 5 characters"),
    @Length(max = 50, message = "The field must be less than 50 characters")
})
private String myString;

顺便说一句。由于可移植性的原因,我建议更喜欢Bean Validation
API定义的@Size@Length

2020-12-03