我正在使用Thymeleaf,并且需要多个模板中的属性值(而不是通用的页眉或页脚)。
文档说如果我们有a.html
模板,则消息将以a.properties
或a_en.properties
进行发送。
如果我有财产怎么办,请说:test_property=This is a common message: {0}
我想在模板a.html
和b.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文件(与片段文件位于同一文件夹中)。