2013-03-15 25 views
1

在挂毯中,.properties具有本地化消息的文件位于page,component和应用程序消息目录中。我上课是不是从pagescomponents包,其中我想以通常的方式来注入的消息:该类的邮件文件夹不是'页面'和'组件'包

@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,但它没有工作过。

在此先感谢!

回答

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

感谢您的帮助! – jaos 2013-03-15 11:48:22

相关问题