该类的Messages文件夹不是来自'pages'和'components'包

时间:2013-03-15 08:00:48

标签: java properties tapestry

在Tapestry中,带有本地化消息的.properties文件位于pagecomponent和应用程序消息目录中。我的课不是来自pagescomponents包,我想以通常的方式注入消息:

@Inject
private Messages messages;

稍后使用

获取本地化消息
String msg = messages.get("message-key");

我尝试将.properties文件找到对应文件夹(即src/main/java/nonPageOrComponentPackage/Foo.javascr/main/resources/nonPageOrComponentPackage/Foo.properties),因为page和{{1}已完成}类,但它没有用。

我是否需要在某处指定此component文件的路径?我尝试用方法

来做
.properties
<{1>}中的

,但它也不起作用。

提前致谢!

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);