使用控制器提供的模型参数注入 Grails 2.4.x i18n 消息

Injecting Grails 2.4.x i18n messages with controller-provided model args

此处为 Grails 2.4.4。在 i18n docs 中,他们提供了以下示例:

<g:message code="my.localized.content" args="${ ['Juan', 'lunes'] }" />

这里的问题是 'Juan''lunes'GSP 层 提供的硬编码字符串。 但是,如果我们希望将这些作为 GSP 数据模型的一部分由控制器注入怎么办? 例如:

class MyController {
    SomethingService somethingService

    def something() {
        String str1 = somethingService.doSomething() // Might return 'Juan'
        String str2 = somethingService.doSomethingElse() // Might return 'lunes'

        render(view: 'something', model: [ str1: str1, str2: str2 ])            
    }
}

// Inside the GSP:
<h1><g:message code="my.localized.content" args=??? /></h1>

这里我需要配置 args 以从我的模型中注入带有 str1str2 的本地化 <g:message />(同样,由控制器在上游提供)。有什么想法吗?

使用 <g:message> 标记中的模型变量作为参数是完成此操作的最简单方法。

例如:

<g:message code="my.localized.content" args="${ [str1, str2] }" />