我正在使用Thymeleaf,并且需要多个模板中的属性值(而不是通用的页眉或页脚)。

文档说如果我们有a.html模板,则消息将以a.propertiesa_en.properties进行发送。

如果我有财产怎么办,请说:
test_property=This is a common message: {0}
我想在模板a.htmlb.html中使用。它进入什么属性文件?我可以创建一个全局属性文件,还是可以配置Thymeleaf加载全局属性文件?

我要看这些文档:

http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#messages

似乎这将支持此事...

最佳答案

Thymeleaf docs(Externalizing Messages)说:

Thymeleaf中外部化文本的位置是完全可配置的,并且将取决于所使用的特定org.thymeleaf.messageresolver.IMessageResolver实现。通常,将使用基于.properties文件的实现,但是例如,如果我们想从数据库中获取消息,则可以创建自己的实现。

因此,您可以使用以下方式之一:

1. org.thymeleaf.messageresolver.IMessageResolver接口创建一个自定义实现。
参考:
StandardMessageResolver

2. Thymeleaf使用OGNL作为默认值。根据OGNL docs:

您可以使用语法@ class @ field引用静态字段。该 class 必须完全合格。

因此,创建一个包含这些静态字符串消息的JAVA类,然后在百里香模板中调用它们:

th:text="${@com.example.yourpackagename.Constants@STRING_KEY}"

3. 如果您使用的是Spring / Spring Boot,则只需使用位于资源文件夹中的message.properties文件。

4. 创建一个使用所需消息的片段html页面,然后在模板中调用该片段,然后对该片段html文件使用.properties文件(与片段文件位于同一文件夹中)。

10-07 19:09
查看更多