Search code examples
springspring-mvcproperties-filethymeleaf

Argument to message in properties file not being resolved by Spring


I have the following key/message in a properties file:

kadjoukor.registration.form.successMessage=You've been successfully registered. An email has been sent to <b>{0}</b>. Please activate your registration by consulting your email.

In my template, I try to display it as follows in a Thymeleaf template:

<div id="alert-success" th:if="${#bools.isTrue(member)}" class="alert alert-success" th:utext="#{kadjoukor.registration.form.successMessage(${member.email})}"></div>

All I get is:

Youve been successfully registered. An email has been sent to {0}. Please activate your registration by consulting your email.

Notice the argument has not been replaced by its value i.e. I get this: {0}. Also notice the apostrophe has been removed by Spring...

EDIT: Here is how I've configured the message source:

<bean class="org.springframework.context.support.ResourceBundleMessageSource" id="messageSource">
    <property name="basenames" value="/META-INF/i18n/application,/META-INF/i18n/messages" />
</bean>

Solution

  • In order to prevent this problem, the apostrophe has to be escaped by another apostrophe.

    See: Why Spring MessageSource arguments are not filled correctly in some locales?

    However, note that this only occurs when there's one or several arguments in the message.