Grails Problème avec les messages d'erreur personnalisés
Je suis en train d'essayer de spécifier des messages d'erreur personnalisés en grain pour les contraintes par défaut mais jusqu'à présent, tout ce que j'obtiens est le message d'erreur par défaut.
Je sais que je dois modifier le graal-app/i18n/messages.fichier de propriétés
Si je change le paramètre par défaut suivant les codes d'erreur message, il affiche correctement le nouveau message d'erreur
default.blank.message=Property [{0}] of class [{1}] cannot be blank
Cependant, ce n'est pas ce que je suis en train de faire. J'ai besoin de plus granulaire de rapports d'erreurs et d'avoir plus d'un champ peut être vide etc. Ce que je voudrais être en mesure de le faire serait, afficher des messages personnalisés pour chaque champ dans une classe
package com.mycompany.myapp
class Test{
String name
def constraints = {
name(nullable:false, blank:false)
}
}
(codes suivants sont ajoutés à la fin des messages.les propriétés)
test.name.blank=Name cannot be blank
test.name.nullable=Name cannot be nullable
Selon le graal de la documentation, cela devrait fonctionner correctement, que ce soit avec ou sans le nom du package - className.propertyName.vide
grails.org/doc/latest/(contraintes section) & (section 7.4 - validation & internationalisation)
J'ai essayé toutes comnbinations que je peux penser, mais il affiche toujours le message personnalisé
J'ai aussi essayé d'installer le graal i18n modèles plugin
http://www.grails.org/I18n+Modèles+Plugin
qui a généré les codes d'erreur automatiquement pour moi. J'ai ajouté les nouveaux codes d'erreur à la fin des messages existants.fichier de propriétés, mais j'ai toujours le défaut des messages d'erreur.
Cependant, il y avait quelque chose de différent avec les codes d'erreur générés par le plugin.
au lieu du format spécifié dans le graal doc - test.nom.null=......, il générée automatiquement de test.nom.la valeur null.erreur=Message Personnalisé
J'ai aussi essayé de supprimer la valeur par défaut des messages d'erreur complètement, mais ils sont toujours affichés
Si quelqu'un a rencontré ce problème avant, je vous serais reconnaissant de toute l'aide que quelqu'un peut me donner
Merci d'avance
source d'informationauteur mh377
Vous devez vous connecter pour publier un commentaire.
mettre def messageSource (dans le contrôleur ou d'un service)
J'ai aussi trouvé un bon lien qui explique mieux ce
http://johnrellis.blogspot.com/2010/02/retrieve-grails-domain-errors-from.html
Bien, la documentation vous montre un exemple de la façon de remplacer les messages de l'un des défaut des Contraintes de Validation (vide, nullable, min, max, la taille, la portée, etc.). Mais il ne parvient pas à vous dire de regarder dans la documentation de chaque Contrainte et en bas il vous montre ce propery clé à utiliser:
Code d'erreur: className.propertyName.taille.toosmall ou className.propertyName.taille.toobig
pour Contrainte taille http://grails.org/doc/latest/ref/Constraints/size.html
Donc, pour
utilisation:
com.exemple.De l'utilisateur.nom d'utilisateur.taille.toosmall=Yo! trop petit: [{0}] de la classe [{1}] avec la valeur [{2}] ne relève pas de la validité de la gamme de taille de [{3}] [{4}]
com.exemple.De l'utilisateur.nom d'utilisateur.taille.toobig=Yo! trop grandes: [{0}] de la classe [{1}] avec la valeur [{2}] ne relève pas de la validité de la gamme de taille de [{3}] [{4}]
Il se peut que vos contraintes ne sont pas statiques, il doit être spécifié comme "statique des contraintes = { ..."
Noter également que les valeurs null par défaut à false si vous n'avez pas besoin de spécifier que.
- Je utiliser pleinement qualifié de la classe des noms dans mes messages.propriétés
Cela a fonctionné pour moi
au lieu de