Thymeleaf /春天。从ModelMap获取属性键

时间:2017-05-18 09:12:50

标签: java spring spring-boot thymeleaf

我有一个基本的SpringBoot应用程序。使用Spring Initializer,嵌入式Tomcat,Thymeleaf模板引擎和包作为可执行的JAR文件。

在我的属性文件中:

signup.form.error.email.already.exists=Email (already taken)

在我的控制器中:

protected static final String ERROR_MESSAGE_KEY = "errorMessageKey";

model.addAttribute(ERROR_MESSAGE_KEY, "signup.form.error.email.already.exists");

在模板中:

 <div th:if="${errorMessageKey != null}" class="alert alert-danger alert-dismissible" role="alert">
                    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                        <span aria-hidden="true">x</span>
                    </button>
                    <p th:text="#{errorMessageKey}" />                     
                </div>

但这是我在模板中看到的而不是电子邮件(已经拍摄)

??errorMessageKey_en_US??

3 个答案:

答案 0 :(得分:0)

将属性放入模型不是解决Thymeleaf属性的方法。请参阅docs,了解如何正确执行此操作。

答案 1 :(得分:0)

这是因为Thymeleaf正在尝试获取区域设置消息。默认情况下,它正在尝试en_US。

您可以查看此answer

答案 2 :(得分:0)

尝试使用

<p th:text="#{signup.form.error.email.already.exists}" />

编码时:

model.addAttribute(ERROR_MESSAGE_KEY, "signup.form.error.email.already.exists");

Spring没有解析来自message.properties文件的消息:你只是将字符串"signup.form.error.email.already.exists"放在模型中......

注意表达式#{errorMessageKey}正在返回包含指定消息的源文件的名称。