views:

64

answers:

2

I can validate the length of a String with an annotation like:

@Length(max = 255)

But what if I want to verifiy that the length is either 5 or 9? Can this be done with an annotation?

+3  A: 

Here's the documentation for implementing custom constraint.

It's failry simple:

  1. You define your own annotation, with the appropriate attributes
  2. You define the class which will perform the validation
  3. You define validation messages
  4. You use the annotation

So perhaps your annotation might look like:

@Constraint(validatedBy=YourChecker.class)
//other annotations
public @interface AllowedValues {
    int[] value();
}
Bozho
+3  A: 

Try @Pattern(regex=".{5}|.{9}") (change the dot to another character class if you don't want to match everything.

Brian Deterling
Thanks. +1 for a sufficient answer, but I'll accept the one that answered the question that I hadn't yet thought to ask.
FarmBoy
(+1) good idea.
Bozho