如何在Spring 3/Thymeleaf中显示带参数的本地化消息

Hof*_*ann 45 java spring thymeleaf

我正在使用Spring 3和Thymeleaf制作一些网页,我迷失了如何显示这样的消息:

welcome.message =你好{0},欢迎!

然后使用thymeleaf标记内的用户名替换{0}:

<h1 th:text="#{welcome.message}">Welcome Placeholder</h1>
Run Code Online (Sandbox Code Playgroud)

我甚至不确定{0}是否是捆绑消息的正确语法.

Sot*_*lis 76

您可以使用

#{welcome.message(${some.attribute})}
Run Code Online (Sandbox Code Playgroud)

some.attribute替换时使用的值将在何处{0}.

您应该能够用逗号分隔它们之间的值()以添加更多要使用的值.


Ser*_*ahé 22

您甚至可以使用计算的消息密钥作为参数:

<p th:text="#{messages.msg1(${param1})}"></p>
<p th:text="#{messages.msg2(${param2},${param3})}"></p>
<p th:text="#{messages.msg3(#{${param4}})}"></p>
Run Code Online (Sandbox Code Playgroud)

上面,[msg3]的参数是一个消息密钥[#{key}],其中密钥本身是计算的[$ {param4}].好处是您可以在国际化消息中插入国际化计算片段.


Bre*_*t Y 6

如果需要在不知道数组大小的情况下传递参数数组,则可以使用:

<p th:text="${#messages.msgWithParams(messageKey, messageParams)}"></p>
<!-- or -->
<p th:text="${#messages.msgOrNullWithParams(messageKey, messageParams)}"></p>
Run Code Online (Sandbox Code Playgroud)

https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#messages-1