Grails <g:message code =“”>和$ {message(code)} </g:message>之间的区别

时间:2015-02-25 20:30:07

标签: grails

在Grails中,有两种(主要)方法将国际化字符串插入gsp:

<g:message code="your.code.here" />

 ${message(code:'your.code.here')}

我认为我曾经在一段时间看到,当在HTML代码中间时,建议使用上面的第一个

<h1><g:message code="title.header.text" /></h1>

,建议使用上面的第二个代码(使用引号),如

var messageToDisplay = "${message(code:'your.code.here')}";

然而,我也见过人们

<h1>${message(code:'title.header.text')}</h1>

下面的最后一行是否也可以在Grails中接受/推荐? 是否有理由做/不做上面的最后一个选项?

(编辑在下面添加)

关于编码的另一个问题: 在HTML的中间,(有时)需要做

<h1><g:message code="title.header.text" encodeAs="HTML"/></h1>

在JavaScript中间

var messageToDisplay = "${message(code:'your.code.here').encodeAsJavaScript()}";

那有区别吗?可以将默认编码更改为标记的HTML和$ {message(code)}的JavaScript吗?

2 个答案:

答案 0 :(得分:2)

它们都完全有效。这一切都取决于背景和风格。大多数人喜欢在可能的情况下使用标签。它们最终都使用相同的标记库/代码。

当您需要解析控制器,其他标记库或服务中的消息时,message(code:)格式特别有用。

答案 1 :(得分:0)

标签和scriptlet在下面是相同的,但我更喜欢在网页中尽可能使用标签,因为它们更适合HTML标记的其余部分,并且更容易阅读。