如何在GSP之外获取消息属性的值?例如,相当于
<g:message code="some.message"/>
但是在控制器中呢?
在控制器或标签库中,您可以使用以下内容:
g.message(code: 'some.message')
但是,在域类或服务内部,您需要注入messageSource并从Spring类AbstractMessageSource调用getMessage()方法。以下代码片段向您展示如何实现:
import org.springframework.context.i18n.LocaleContextHolder as LCH
...
class MyServiceOrMyDomain {
def messageSource
...
messageSource.getMessage(code, msgArgs, defaultMsg, LCH.getLocale())
...
}
你还可以导入验证标签库并使用它来获取消息源。
import org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib
def g = new ValidationTagLib()
g.message(error: error)
java.lang.NullPointerException: Cannot invoke method getMessage() on null object
。 通过实例化成员变量messageSource,我解决了这个问题:def messageSource = grails.util.Holders.applicationContext.getBean("messageSource")
。 - philburns