2010-05-06 17 views

risposta

11

È possibile ottenere il taglib configurato, ma la maggior parte si aspettano di essere in esecuzione nel contesto di una richiesta web. Per aggirare questo è possibile associare una richiesta finto:

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') 

È inoltre possibile ottenere i messaggi per altri linguaggi impostando il locale della richiesta, ad esempio,

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

Utilizzando @Burt console plugin questo è ancora più facile in quanto non abbiamo a deridere richiesta 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'); 

È possibile ottenere un elenco di tutte le Taglibs nell'applicazione eseguendo questo codice nella console ...

// 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