Вызываете что-нибудь из TagLib в консоли Grails? - PullRequest
10 голосов
/ 06 мая 2010

Есть ли способ вызвать закрытие taglib из консоли grails? Я хочу быть в состоянии получить доступ к тегу сообщения в консоли Grails, и я не могу понять это ...

Ответы [ 2 ]

11 голосов
/ 06 мая 2010

Вы можете получить настроенную библиотеку тегов, но большинство ожидает ее запуска в контексте веб-запроса. Чтобы обойти это, вы можете связать фиктивный запрос:

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')
3 голосов
/ 17 января 2014

Используя @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');

Вы можете получить список всех tagLibs в вашем приложении, запустив этот код в консоли ...

// 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...