Arquivo para a tag ‘service’
Como acessar uma taglib de dentro de um service
Uma situação que acontece muito, é a reutilização das funções de taglibs dentro dos controllers de sua aplicação grails. Isso é muito fácil de se fazer, basta chamar o método usando o objeto com o nome do namespace da taglib.
Ou seja, para usar dentro do controller a função de formatação de números, definida pela função formatNumber (taglib já no core do grails), é só fazer a chamada assim:
def myAction = {
render g.formatNumber([number:5000.234, type: "number", maxFractionDigits: 2])
}
Esta função é equivalente a chamar a taglib de dentro de um gsp da seguinte maneira:
<g:formatNumber number="5000.234" type="number" maxFractionDigits="2" />
Mas quando precisamos fazer isto, por exemplo, dentro de um service, encontramos um probleminha chato, as taglibs não são injetadas automaticamente. Para contornar essa “situação“, temos que buscar a taglib manualmente, da seguinte maneira:
def myTag = grailsApplication.mainContext.
getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib')
def value = myTag.formatNumber([number:5000.234, type: "number", maxFractionDigits: 2])
Ahhh, para isso não se esqueca de injetar o objeto da grailsApplication da seguinte maneira
class MeuService {
def grailsApplication
(...)
}
Bin-go.