2013-02-26 3 views
2

Je suis un débutant dans Grails afin que vous puissiez trouver ma question assez naïve. Je voudrais remplacer g tag tag. Je souhaite ajouter de nouvelles fonctionnalités au comportement de la balise, puis appeler l'implémentation d'origine à partir de ValidationTagLib. En ce qui me concerne je peux créer mon propre taglib où je redéfinir l'étiquette. Le message G est une fermeture qui appelle réellement la méthode messageImpl à partir de ValidationTaglib. Ma question est comment puis-je appeler cette méthode? J'ai essayé ce code pour appeler la fermeture mais au lieu de messages que j'ai recevoir des espaces vides:grails comment remplacer l'étiquette de message g

class MyTagLib { 

    static namespace = "g" 

    def message = { attrs -> 
     //my changes in tag's behaviour 
     def validationTagLib = grailsAttributes.applicationContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib') 
     validationTagLib.message.call(attrs) 
    } 
} 

Je vous serais très reconnaissant de votre aide!

+0

est 'MyTagLib.groovy' dans le bon répertoire (par exemple' Grails-app/taglib')? Avez-vous essayé avec une fermeture avec 2 arguments (attrs, body)? – Isammoc

+0

MyTagLib.groovy est dans le bon répertoire et j'ai essayé la fermeture avec 2 arguments mais toujours aucun résultat – user2109125

+0

voir http://stackoverflow.com/questions/6230852/how-to-override-standard-standard-of-applicationtaglibcreatelink-and -glink –

Répondre

5

Vous devez étendre la Grails ValidationTagLib

import org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib 

class MyValidationTagLib extends ValidationTagLib { 

    /** 
    * Resolves a message code for a given error or code from the resource bundle. 
    * 
    * @emptyTag 
    * 
    * @attr error The error to resolve the message for. Used for built-in Grails messages. 
    * @attr message The object to resolve the message for. Objects must implement org.springframework.context.MessageSourceResolvable. 
    * @attr code The code to resolve the message for. Used for custom application messages. 
    * @attr args A list of argument values to apply to the message, when code is used. 
    * @attr default The default message to output if the error or code cannot be found in messages.properties. 
    * @attr encodeAs The name of a codec to apply, i.e. HTML, JavaScript, URL etc 
    * @attr locale override locale to use instead of the one detected 
    */ 
    Closure message = { attrs -> 
     //my changes in tag's behaviour 
     ValidationTagLib validationTagLib = grailsAttributes.applicationContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib') 
     validationTagLib.message.call(attrs) 
    } 
} 
+0

Merci drorb! J'aurais dû me deviner. Je suis un noob ... – user2109125