Есть ли способ вызвать закрытие taglib внутри консоли grails? Я хочу иметь возможность получить тег сообщения внутри консоли grails, и я не могу понять это...
Вызов материала TagLib в консоли Grails?
Ответ 1
Вы можете получить настроенный taglib, но большинство ожидает, что оно будет запущено в контексте веб-запроса. Чтобы обойти это, вы можете связать запрос mock:
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')
Ответ 2
Используя @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