Grails - getting a message value from controller

armandino picture armandino · May 12, 2010 · Viewed 21.7k times · Source

How can I get a value from message properties outside of GSPs? For instance, the equivalent of

<g:message code="some.message"/>

but in a controller?

Answer

fabien7474 picture fabien7474 · May 12, 2010

Inside a controller or a taglib, you can use the following :

g.message(code: 'some.message')

However, inside domain classes or services, you need to inject messageSource and call getMessage() method from Sping class AbstractMessageSource. This snippet shows you how to do that:

import org.springframework.context.i18n.LocaleContextHolder as LCH
...
class MyServiceOrMyDomain {
  def messageSource 
  ...
  messageSource.getMessage(code, msgArgs, defaultMsg, LCH.getLocale())
  ...
}