11
votes

Puis-je remplacer une annotation de validation JSR-303

J'ai un test comme ci-dessous: xxx

avec la sortie suivante:

[contraintviolationimpl {interpolatedmessage = 'p', propertyPath = lst, rootbeanclass = classe com .... validator.tetstsizeannotation $ C, messageemplate = 'p'}]

Je m'attendais à ce que l'annotation puisse @Size être remplacée et qu'aucun avertissement apparaît.
Y a-t-il un moyen d'accomplir cela?

EDIT: J'ai trouvé un Bug semble lié à cela, Mais je gère le point 4.2.0 final et obtenez toujours le comportement ci-dessus.


0 commentaires

3 Réponses :


3
votes

Vous pouvez utiliser une validation configurée d'annotation via XML Configuration:

http: //docs.jboss .org / hibernate / validateur / 4.2 / Référence / EN-US / HTML_SINGLE / # VALIDATOR-XMLConfiguration

Dans votre cas, si vous déclarez une validation différente (ou aucune validation) pour la getlist () méthode dans le fichier validation.xml, il remplacera la @size Annotation.


2 commentaires

Non, je veux utiliser le validateur par défaut, mais remplacer l'annotation.


En tant que Perception Sais dans sa réponse, non, vous ne pouvez pas les remplir réellement dans le code.



17
votes

Les annotations de validation primordiales ne sont effectivement pas prises en charge pour JSR-303. Au lieu de cela, des annotations sur des méthodes remplacées dans la sous-classe seront appliquées cumulativement : à partir de la section 3.3 de la spécification: xxx


1 commentaires

Donc, cela signifie que je ne peux pas remplacer @notnull en super classe, non? Merci.



1
votes

Juste pour les enregistrements, j'ai trouvé un contournement pour mon problème: xxx


1 commentaires

Ce n'est pas une substitution, c'est cumulatif. Dans ce cas, la validation initiale passera toujours si la deuxième validation passe, mais dans d'autres cas, où la validation initiale est mineure (...), puis vous ajoutez max (...) à la méthode primordiale, vous " Il doit utiliser la validation Min et Max (Max ne remplacera pas la première minute).