有没有办法从 grails 控制台内部调用 taglib 闭包?我希望能够在 grails 控制台中获取消息标签,但我无法弄清楚......
问问题
1360 次
2 回答
11
您可以获得配置的标记库,但大多数都希望在 Web 请求的上下文中运行。为了解决这个问题,您可以绑定一个模拟请求:
import grails.util.GrailsWebUtil
GrailsWebUtil.bindMockWebRequest ctx
def g = ctx.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib')
String message = g.message(code: 'default.button.delete.confirm.message')
您还可以通过设置请求的语言环境来获取其他语言的消息,例如
import grails.util.GrailsWebUtil
def webRequest = GrailsWebUtil.bindMockWebRequest(ctx)
webRequest.currentRequest.addPreferredLocale(Locale.GERMANY)
def g = ctx.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib')
String message = g.message(code: 'default.button.delete.confirm.message')
于 2010-05-06T16:58:17.117 回答
3
使用@Burt控制台插件这更容易,因为我们不必模拟网络请求......
import org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib
// Getting the class name to reduce horizontal
// scrolling in StackOverflow
def g = ctx.getBean(ValidationTagLib.class.getName())
g.message(code: 'default.button.delete.confirm.message');
您可以通过在控制台中运行此代码来获取应用程序中所有 tagLib 的列表...
// prints a bean name per line.
ctx.getBeanNamesForType(Object).findAll {
it =~ /.*TagLib$/
} .sort() {println it}
// add false to prevent console printing the map out
false
于 2014-01-17T17:24:49.730 回答