Grails - 从控制器获取消息值

arm*_*ino 29 grails messages

如何从GSP之外的消息属性中获取值?例如,相当于

<g:message code="some.message"/>
Run Code Online (Sandbox Code Playgroud)

但在控制器?

fab*_*474 47

在控制器或taglib中,您可以使用以下内容:

g.message(code: 'some.message')
Run Code Online (Sandbox Code Playgroud)

但是,在域类或服务中,您需要从Sping类AbstractMessageSource注入messageSource并调用getMessage()方法.此代码段显示了如何执行此操作:

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

  • 我正在使用grails 2.1.看起来你不能在控制器中使用g命名空间.使用消息(代码:"")完成工作.也许你现在只需要taglibs的g命名空间.http://grails.org/doc/2.1.0/guide/single.html#i18n (2认同)

Bla*_*ger 10

您还可以导入验证标记lib并使用它来获取消息源.

import org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib
def g = new ValidationTagLib()
g.message(error: error)
Run Code Online (Sandbox Code Playgroud)