2013-02-26 2 views
2

Я новичок в Grails, поэтому вы можете найти мой вопрос довольно наивным. Я хотел бы переопределить тег g сообщения. Я хочу добавить новые функции в поведение тега, а затем вызвать исходную реализацию из ValidationTagLib. Насколько я могу судить, я могу создать свой собственный taglib, где я переопределяю тег. G сообщение - это замыкание, которое фактически вызывает метод messageImpl из ValidationTaglib. Мой вопрос: как я могу назвать этот метод? Я попробовал этот код, чтобы вызвать закрытие, но вместо сообщений я должен получить пустые пространства:grails как переопределить 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) 
    } 
} 

Я очень ценю вашу помощь!

+0

Является 'MyTagLib.groovy' в правильном каталоге (т.е.' Grails-приложение/taglib')? Вы пытались с закрытием с двумя аргументами (attrs, body)? – Isammoc

+0

MyTagLib.groovy находится в правильном каталоге, и я попробовал закрыть с двумя аргументами, но все равно никакого результата – user2109125

+0

см. Http://stackoverflow.com/questions/6230852/how-to-override-standard-behavior-of-applicationtaglibcreatelink-and -glink –

ответ

5

Вам нужно будет продлить 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

Спасибо drorb! Я должен был догадаться. Я такой нуб ... – user2109125

 Смежные вопросы

  • Нет связанных вопросов^_^