使用控制器提供的模型参数注入 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
以从我的模型中注入带有 str1
和 str2
的本地化 <g:message />
(同样,由控制器在上游提供)。有什么想法吗?
使用 <g:message>
标记中的模型变量作为参数是完成此操作的最简单方法。
例如:
<g:message code="my.localized.content" args="${ [str1, str2] }" />
此处为 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
以从我的模型中注入带有 str1
和 str2
的本地化 <g:message />
(同样,由控制器在上游提供)。有什么想法吗?
使用 <g:message>
标记中的模型变量作为参数是完成此操作的最简单方法。
例如:
<g:message code="my.localized.content" args="${ [str1, str2] }" />