I am using Hibernate validator for form validation in my web-app. I am using the @Length annotation for my String attribute as follows:
@Length(min = 5, message = "The field must be at least 5 characters")
private String myString;
However, I have a need to display a different message if the String exceeds 50 characters. Is there a way to use the out-of-the-box @Length validator to do this? An example of what I would like to do (compiler will not let me) is as follows:
@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;
I have tried @Max and @Min and they do not do what I want. Any input would be greatly appreciated!
The Javax bean validation API provides the following most frequently used annotations. The Hibernate validator provides the following commonly used annotations for validation. In case of product or project development we must use both the annotations for bean validation.
Validating constraints In the setUp() method, a Validator instance is retrieved from the ValidatorFactory . Validator instances are thread-safe and may be reused multiple times.
Hibernate Validator allows to express and validate application constraints. The default metadata source are annotations, with the ability to override and extend through the use of XML. It is not tied to a specific application tier or programming model and is available for both server and client application programming.
@Size(min=2, max=30) : Allows names between 2 and 30 characters long.
You can specify several @Length
constraints at one element by using the inner list annotation (which is defined for each constraint type in Bean Validation/Hibernate Validator) like this:
@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;
Btw. I recommend to prefer @Size as defined by the Bean Validation API over @Length
for portability reasons.
If you use the java standard javax.validation.constraint.Size, you can achieve the same thing this way:
@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;
Notice that you can avoid hardcoding the field size by using message interpolation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With