Grailsコンソール内からtaglibクロージャーを呼び出す方法はありますか?Grailsコンソール内のメッセージタグを取得できるようにしたいのですが、これを理解できません...
質問する
1360 次
2 に答える
11
構成されたtaglibを取得できますが、ほとんどの場合、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コンソール プラグインを使用すると、Web リクエストをモックする必要がないため、これはさらに簡単になります...
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 に答える