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

Grails Difference between <g:message code=""/> and ${message(code)}

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

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

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

我以为我在HTML代码中间看到了上面第一个推荐的地方

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

上面的第二个建议在 JavaScript 代码中(用引号引起来)如

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

不过,我也看到有人这样做了

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

在 Grails 中,下面的最后一行也是 acceptable/recommended 吗?
是否有理由 do/not 执行上面的最后一个选项?

(编辑在下方添加)

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

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

并且在JavaScript中间

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

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

它们都完全有效。这完全取决于上下文和风格。大多数人都喜欢尽可能使用标签。他们最终都使用相同的标签 library/code.

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

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