Hibernate Validator – @Length – 如何为min和max指定单独的消息?
我在我的网络应用程序中使用Hibernatevalidation器进行表单validation。 我在我的String属性中使用@Length注释,如下所示:
@Length(min = 5, message = "The field must be at least 5 characters") private String myString;
但是,如果String超过50个字符,我需要显示不同的消息。 有没有办法使用开箱即用的@Lengthvalidation器来做到这一点? 我想做的一个例子(编译器不会让我)如下:
@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,他们没有做我想做的事。 任何投入将不胜感激!
您可以使用内部列表注释 (在Bean Validation / Hibernate Validator中为每个约束类型定义)在一个元素上指定多个@Length
约束,如下所示:
@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;
顺便说一句。 出于可移植性的原因,我建议优先使用BeanvalidationAPI定义的@Length
,而不是@Length
。
根据文档,您可以使用@Length(min=, max=)
和一条消息。 然后只需将您的消息更改为“字段必须介于5到50个字符之间”
如果你使用java标准的javax.validation.constraint.Size,你可以用这种方式实现同样的目的:
@Size.List ({ @Size(min=8, message="The field must be at least {min} characters"), @Size(max=60, message="The field must be less than {max} characters") }) private String myString;
请注意,您可以通过使用消息插值来避免对字段大小进行硬编码。
- Java Bean Validation(JSR303)约束涉及几个bean属性之间的关系
- Resteasy Beanvalidation未被调用
- 如何在struts2中使用@Valid注释触发validation?
- Spring MVC – REST服务中bean列表上的@Valid
- Jersey / JAX-RS资源方法输入beanvalidation
- JSR303自定义validation器被调用两次
- Hibernate @OneToOne @NotNull
- JSF / Hibernate NotBlankvalidation
- Springvalidation器:同时具有注释和validation器实现