web-dev-qa-db-fra.com

Aucun validateur n'a pu être trouvé pour la contrainte 'javax.validation.constraints.Size'

J'ai l'erreur suivante

javax.validation.UnexpectedTypeException: HV000030: aucun validateur n'a pu être trouvé pour la contrainte 'javax.validation.constraints.Size' de type de validation 'Java.lang.Integer'. Vérifiez la configuration pour "actualisé"

Mon code est:

@Column(name= "discount_percentage")
@Size(min=0, max=90)
@Min(0)
@Max(90)
private Integer discountPercentage = 0;

Je l'ai mis à 0 parce que j'obtenais une NullPointerException lors du chargement de ma vue. Et est Integer parce que je lisais dans d'autres questions, et certaines personnes disent que parfois il y a des problèmes lors de l'utilisation de @Size avec des types primitifs.

Que devrais-je faire? Merci d'avance.

7
Lucas. D

@Size est une annotation de validation de bean qui valide que le String associé a une valeur dont length est délimitée par le minimum and maximum valeurs. Et comme votre exception le dit, cela ne s'applique pas au type Integer.

Utilisation: @Range

@Column(name= "discount_percentage")
@Range(min=0, max=90)
private Integer discountPercentage = 0;

Ou vous utilisez également le cloud uniquement @Max or @Min et cela fonctionnera aussi. Pour plus d'informations, veuillez consulter le lien this .

11
Amit Bera

@Size n'est pas utilisé pour valider min/max.

Il est utilisé pour valider la taille des collections, la longueur des chaînes, etc.

Dans ce cas, vous devez utiliser @Min, @Max au lieu.

Reportez-vous ici pour le document complet: https://docs.Oracle.com/javaee/7/api/javax/validation/constraints/Size.html