2017-03-18 2 views
0

Je cherche à implémenter un JPA Bean Validator pour une annotation similaire à l'annotation @Size, permettant ainsi les paramètres min et max sur l'annotation. J'ai regardé à travers la documentation et divers exemples mais je n'ai pas trouvé d'implémentation qui permettrait plusieurs paramètres sur l'Annotation.Personnalisé JPA Bean Validator avec des paramètres similaires à @Size

mon code ressemble actuellement à ce

@Target({ FIELD, METHOD, PARAMETER, ANNOTATION_TYPE }) 
@Retention(RUNTIME) 
@Constraint(validatedBy = CapacityImpl.class) 
public @interface Capacity { 

    String message() default "Capacity not in valid Range"; 

    // Required by validation runtime 
    Class<?>[] groups() default { }; 
    Class<? extends Payload>[] payload() default { }; 

} 

L'annotation finale devrait ressembler à ceci @Capacity(min=19, max=40)

public class CapacityImpl implements ConstraintValidator<Capacity, Integer> { 
    @Override 
    public void initialize(Capacity capacity) { 

    } 

    @Override 
    public boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) { 
     return false; 
    } 
} 

Alors ma question est de savoir comment dois-je changer cette interface et la classe pour permettre effectivement la paramètres min et max sur l'annotation, de sorte que je peux ensuite valider la valeur du champ avec ces valeurs de paramètres

+1

FWIW ce n'est pas l'API JPA, il est l'API de validation Bean, différentes spécifications –

Répondre

2

Juste un les dd à votre définition d'annotation:

public @interface Capacity { 

    String message() default "Capacity not in valid Range"; 

    // Required by validation runtime 
    Class<?>[] groups() default { }; 
    Class<? extends Payload>[] payload() default { }; 

    int min(); 
    int max(); 
} 
+0

Merci pour la réponse rapide, plus facile que je pensais: D –