java - Hibernate Validator - @Length - 如何为最小值和最大值指定单独的消息?

标签 java bean-validation hibernate-validator

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

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

但是,如果字符串超过 50 个字符,我需要显示不同的消息。有没有办法使用开箱即用的@Length validator 来做到这一点?我想做的一个例子(编译器不会让我这样做)如下:

@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,但它们并没有按照我的意愿行事。任何意见将不胜感激!

最佳答案

您可以使用内部list annotation 在一个元素上指定多个@Length 约束。 (在 Bean Validation/Hibernate Validator 中为每个约束类型定义)如下:

@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;

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

关于java - Hibernate Validator - @Length - 如何为最小值和最大值指定单独的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7084706/

相关文章:

java - 如何将枚举的所有值映射到常量表达式?

java - 如何将从 Web 服务接收到的 Binary64 格式的图像转换为实际图像?

java - 如何将 Hessian 与 Guice 集成?

java - Bean Validation + JAX-RS 不读取自定义 ValidationMessages.properties

spring-mvc - 验证生成的 JAXB 类 (JSR 303/Spring)

java - Spring MVC : Not able to use use validator, 获取 "Injection of autowired dependencies failed"

java - 如何强制 Hibernate Validator 递归(级联)验证字段?

java - 通过类加载器加载的 java 类的成员未初始化

java - Android中的Ksoap2无法序列化

java - Spring MVC Form 将一组两个或多个字段绑定(bind)到对象列表中