grails如何覆盖g消息标记
我是Grails的新手,所以你可能会觉得我的问题很幼稚。 我想覆盖g消息标记。我想在标记的行为中添加新特性,然后从ValidationTagLib调用原始实现。 就我而言,我可以创建自己的taglib,在这里我可以重新定义标记。 G message是一个实际从ValidationTaglib调用messageImpl方法的闭包。 我的问题是如何调用此方法? 我尝试使用此代码调用关闭,但收到的不是消息,而是空白:grails如何覆盖g消息标记,grails,tags,overriding,message,taglib,Grails,Tags,Overriding,Message,Taglib,我是Grails的新手,所以你可能会觉得我的问题很幼稚。 我想覆盖g消息标记。我想在标记的行为中添加新特性,然后从ValidationTagLib调用原始实现。 就我而言,我可以创建自己的taglib,在这里我可以重新定义标记。 G message是一个实际从ValidationTaglib调用messageImpl方法的闭包。 我的问题是如何调用此方法? 我尝试使用此代码调用关闭,但收到的不是消息,而是空白: class MyTagLib { static namespace = "
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)
}
}
我将非常感谢你的帮助 您需要扩展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)
}
}
MyTagLib.groovy
是否在正确的目录中(即grails-app/taglib
)?您是否尝试过使用带有2个参数的闭包(attrs,body)?MyTagLib.groovy位于正确的目录中,我尝试过带有2个参数的闭包,但仍然没有结果。请参阅本主题,但它提供了如何调用g link的解决方案。我试图使用这种方法,但它不起作用