我有一个基本的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??
答案 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}
正在返回包含指定消息的源文件的名称。