在Tapestry中,带有本地化消息的.properties
文件位于page
,component
和应用程序消息目录中。我的课不是来自pages
和components
包,我想以通常的方式注入消息:
@Inject
private Messages messages;
稍后使用
获取本地化消息String msg = messages.get("message-key");
我尝试将.properties
文件找到对应文件夹(即src/main/java/nonPageOrComponentPackage/Foo.java
到scr/main/resources/nonPageOrComponentPackage/Foo.properties
),因为page
和{{1}已完成}类,但它没有用。
我是否需要在某处指定此component
文件的路径?我尝试用方法
.properties
<{1>}中的,但它也不起作用。
提前致谢!
答案 0 :(得分:0)
消息检索机制仅用于页面/组件内部。您有应用程序消息目录,它可以被一些基页/组件目录覆盖,然后被结束页面/组件目录覆盖。所有这些仅适用于页面和组件。
如果您的类不是页面或组件,则可以使用@Inject
注释仅注入应用程序消息目录。您还可以为ComponentMessageSource
服务做出贡献,以便向应用程序目录添加一些其他消息包。
@Contribute(ComponentMessagesSource.class)
public void contributeComponentMessagesSource(@Value("context:WEB-INF/mail") Resource mailMessages, OrderedConfiguration<Resource> configuration) {
configuration.add("mail", mailMessages);
}
但您应该了解此消息包将可用于所有页面/组件和服务。
访问某些特定消息包的另一种方法是使用MessageImpl。但这种方式很棘手。它使用挂毯内部类。
messages = MessagesImpl.forClass(Foo.class);