gpt4 book ai didi

java - 该类的消息文件夹不是来自 'pages' 和 'components' 包

转载 作者:行者123 更新时间:2023-12-01 04:48:25 26 4
gpt4 key购买 nike

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

@Inject
private Messages messages;

稍后使用

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

我尝试将 .properties 文件定位到相应的文件夹(即,对于类 src/main/java/nonPageOrComponentPackage/Foo.javascr/main/resources/nonPageOrComponentPackage/Foo.properties),就像对 pagecomponent 类所做的那样,但它不起作用。

我是否需要在某处指定此 .properties 文件的路径?我尝试用方法来做到这一点

public void contributeValidationMessagesSource(@NotNull Configuration<String> configuration) {
configuration.add("/scr/main/resources/nonPageOrComponentPackage/Foo.properties");
}

AppModule中,但它也不起作用。

提前致谢!

最佳答案

消息检索机制设计为仅在页面/组件内部使用。您有应用程序消息目录,它可以被一些基本页面/组件目录覆盖,然后被结束页面/组件目录覆盖。所有这些仅适用于页面和组件。

如果您的类不是页面或组件,您可以使用 @Inject 注释仅注入(inject)应用程序消息目录。您还可以为 ComponentMessageSource 服务做出贡献,以将一些其他消息包添加到应用程序目录中。

@Contribute(ComponentMessagesSource.class)
public void contributeComponentMessagesSource(@Value("context:WEB-INF/mail") Resource mailMessages, OrderedConfiguration<Resource> configuration) {
configuration.add("mail", mailMessages);
}

但您应该了解,此消息包将可用于所有页面/组件和服务。

访问某些特定消息包的另一种方法是使用 MessageImpl。但这种方式很棘手。它使用 Tapestry 内部类。

messages = MessagesImpl.forClass(Foo.class);

关于java - 该类的消息文件夹不是来自 'pages' 和 'components' 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15427346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com