J'essaie actuellement de fournir un message de validation personnalisé à l'aide de la validation de haricot.
Utilisation actuellement en utilisant la validation du ressort MVC 3.1.1 + Apache Bean. P>
dans ma bean, je spécifie: p> et dans mes messages.properties: p> de l'expérience, j'ai découvert que: p> et ce sera affiché comme Mais tout cela vient de expériences. Je me demande J'ai essayé, espérons-le, à l'aide de Donc, chacune d'elles échoue indépendamment avec NumberFormatxception sur le Ceci est la stacktrace: p> Ceci est le seul qui fonctionne avec le paramètre nommé, il doit être validationMessages.properties, et il doit être exactement la clé qui existe dans le faisceau de ressources par défaut par la mise en œuvre JSR 303 forte>: p> Fondamentalement, la conclusion actuelle est, par défaut, je ne peux pas utiliser de paramètres nommés sur mes messages spécifiques. Le paramètre nommé ne fonctionne que strud> lorsque je remplace la touche exacte em> sur la valeur par défaut JSR303 FOURCINDBUNDLE Je préfère éviter de jouer avec une interpolation pour l'instant, d'où la question initiale sur la manière de savoir que {0} ou {1} ou {2} ou {2} fait référence à ce que dans la documentation. p> p>
le titre ne doit pas être vide et ne doit pas dépasser 50 caractères. code> qui est correct. P>
Taille.addform.title = Le titre ne doit pas être vide et ne doit pas dépasser {max} caractères. Code> Basing sur les validations par défautMessages.Properties, mais finit par NumberFormatxception sur le
{max} code>. Je pense que cela a quelque chose à voir avec les interpolations? P>
Mise à jour h2>
{max} code> : p>
3 Réponses :
Spécification JSR 303 , 4.3.1.1 . "Algorithme d'interpolation de message par défaut"
- 4 - Les paramètres de message sont extraits de la chaîne de message. Ceux qui correspondent au nom d'un attribut de la Les contraintes sont remplacées par la valeur de cet attribut dans la déclaration de contrainte. LI> ul> blockQuote>
J'ai lu ceci comme: Vous devez utiliser le nom des propriétés d'annotation du paramètre de message, au lieu de chiffres. P>
Annexe B "Messages de ressources standardBundsbunds" de la spécification montre quelques exemples : p>
xxx pré> Il semble donc que le paraméreur nommé soit comme vous devez utiliser. (Que
{0} code>,
{1} code> et
{2} code> fonctionne aussi, semble être une implémentation "fonctionnalité") - Mais à la fin, ce n'est que le comportement de l'interpolateur de messages par défaut, la norme définit la manière de les remplacer par votre propre. Em> p>
mise à jour p>
Les coutures d'implémentation de validation hibernate pour avoir une fonctionnalité supplémentaire pour formater les valeurs
$ {validationvalue:
} code>. - Peut-être que cela vous aide avec votre java.lang.numberformatexception code> p>
@see Hibernate Validator Référence, chapitre 5.3. MessagePolator P> P>
Merci ! Je suis d'accord à 100% que les paramètres nommés sont la voie à suivre, mais c'est une mauvaise nouvelle que {0} et amis ne soit qu'une fonctionnalité de mise en œuvre, car les paramètres nommés ne fonctionnent pas bien avec moi. J'ai mis à jour mon message original avec les dernières expériences.
Meilleure utilisation: car @size code> permet aux caractères blancheurs, comme espace (
code>). p> p >
taille.foo.bar code> L'interpolation avec les noms ne fonctionne pas li>
- Toutefois pour
taille.foo.bar code> et baz.foo.bar code> il est (lorsque le nom de l'annotation de validation n'est pas utilisé; la vérification est sensible à la casse) li >
coché avec message.properties code> ajouté dans webappconfig code> extension webmvcconfigureAdapter code> Comme: p> xxx pré > ul>