9
votes

Les commandes des paramètres par défaut de validation des haricots?

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.

dans ma bean, je spécifie: xxx

et dans mes messages.properties: xxx

de l'expérience, j'ai découvert que:

  • {0} fait référence à "Titre"
  • {1} fait référence au maximum, qui est 50
  • {2} fait référence au min, qui est 1

    et ce sera affiché comme le titre ne doit pas être vide et ne doit pas dépasser 50 caractères. qui est correct.

    Mais tout cela vient de expériences. Je me demande s'il existe des documentaires indiquant l'ordre des paramètres pour les contraintes par défaut ?

    J'ai essayé, espérons-le, à l'aide de Taille.addform.title = Le titre ne doit pas être vide et ne doit pas dépasser {max} caractères. Basing sur les validations par défautMessages.Properties, mais finit par NumberFormatxception sur le {max} . Je pense que cela a quelque chose à voir avec les interpolations?


    Mise à jour

    Donc, chacune d'elles échoue indépendamment avec NumberFormatxception sur le {max} :

    • messages.properties : taille.addform.title = Le titre ne doit pas être vide et ne doit pas dépasser {max} caractères.
    • messages.properties : Taille = Le titre ne doit pas être vide et ne doit pas dépasser {max} caractères.
    • messages.Properties : javax.validation.constraint.size.message = Le titre ne doit pas être vide et ne doit pas dépasser {max} caractères.
    • validationmessages.properties : taille.addform.title = Le titre ne doit pas être vide et ne doit pas dépasser {max} caractères.
    • validationmessages.properties : taille = le titre ne doit pas être vide et ne doit pas dépasser {max} caractères.

      Ceci est la stacktrace: xxx

      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 :

      • validationMessages.properties : javax.validation.constraint.size.message = Vous savez la pelle, la taille doit être entre {min} et {max}

        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 lorsque je remplace la touche exacte sur la valeur par défaut JSR303 FOURCINDBUNDLE && Lorsque j'utilise le même nom de fichier JSR303 par défaut, lequel est validationmessages.properties

        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.


0 commentaires

3 Réponses :


4
votes

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.

    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.

    Annexe B "Messages de ressources standardBundsbunds" de la spécification montre quelques exemples : xxx

    Il semble donc que le paraméreur nommé soit comme vous devez utiliser. (Que {0} , {1} et {2} 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.


    mise à jour

    Les coutures d'implémentation de validation hibernate pour avoir une fonctionnalité supplémentaire pour formater les valeurs $ {validationvalue: } . - Peut-être que cela vous aide avec votre java.lang.numberformatexception

    @see Hibernate Validator Référence, chapitre 5.3. MessagePolator


1 commentaires

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.



0
votes

Meilleure utilisation: xxx

car @size permet aux caractères blancheurs, comme espace ( ).


0 commentaires

0
votes
  • pour taille.foo.bar L'interpolation avec les noms ne fonctionne pas
  • Toutefois pour taille.foo.bar et baz.foo.bar il est (lorsque le nom de l'annotation de validation n'est pas utilisé; la vérification est sensible à la casse)

    coché avec message.properties ajouté dans webappconfig extension webmvcconfigureAdapter Comme: xxx


0 commentaires