How to show localization messages with parameters in Spring 3 / Thymeleaf

I'm using Spring 3 and Thymeleaf to make some webpages and I am lost as for how to show messages like this:

welcome.message=Hello {0}, welcome!

and then replace {0} with the user name inside thymeleaf tags:

<h1 th:text="#{welcome.message}">Welcome Placeholder</h1>

I'm not even sure if {0} is the right syntax for the bundle message.


You can use

#{welcome.message(${some.attribute})}

where some.attribute would be the value to use when replacing {0}.

You should be able to comma separate the values between the () to add more values to be used.


You can even use a calculated message key as a parameter:

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

Above, the parameter of [msg3] is a message key [#{key}] where key is itself calculated [${param4}]. The benefit is that you can insert internationalized calculated fragments in an internationalized message.


If you need to pass an array of parameters where you don't know the size of the array then you can use:

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

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