2015-09-11 1 views
0

Le code de commande est le suivant:vue ne détecte pas d'erreur dans le passé dans l'objet modèle

for(o in options){ 

    if(o){ 

     if(!o.isInteger()){ 

      don.errors.reject("The value was not integer") 

      render(view: "editdonation", model: [id:id, donation:don]) 
      return 

     } 

     don.addToDenominations(o.toInteger()) 

    } 

} 

je passe intentionnellement en entrée invalide de telle sorte que le code don.errors.reject() est exécutée. Le editdonation.gsp a le code suivant pour imprimer l'erreur dans l'objet de don.

<ul class="inline-errors" role="alert"> 

     <g:hasErrors bean="${donation}"> 

       <div class="errors"> 

         ok it has errors    

       </div> 

     </g:hasErrors>  

    </ul>  

Pourquoi la vue n'affiche-t-elle pas l'erreur? J'apprécie toute aide!

Répondre

0

La méthode Errors.reject() attend un code d'erreur plutôt qu'une description d'erreur.

Création du code d'erreur

Pour créer votre propre code d'erreur:

  1. Modifier le fichier Grails-app/i18n/message.properties
  2. Ajouter une nouvelle ligne avec votre code d'erreur . Ex: option.donation.notinteger = La valeur de l'option {0} est un entier
  3. Enregistrez le fichier Grails-app/i18n/message.properties

En utilisant le code d'erreur

pour utiliser le code d'erreur, appelez Errors.reject() comme ceci:

don.errors.reject('option.donation.notinteger', [o] as Object[], 'The value was not integer') 

le code passe au-dessus de l'option de rejeter de façon à pouvoir insérer la valeur int o le message d'erreur. Et si nécessaire, il fournit un message d'erreur de secours.

+0

J'ai ajouté l'entrée ci-dessus dans le fichier message.properties et j'ai également utilisé le code dans errors.reject() à la place du message mais je ne vois aucune erreur dans la page d'affichage. – kofhearts