在Java类中使用Seam的消息包

时间:2010-08-24 11:00:37

标签: java jsf seam

我想在带有seam的Java类中使用我的消息包(messages_fr.properties)。

在jsf文件中,所有工作都很好:

<h2>#{msg.newCustomer}</h2>

但在我的Java课程中,我尝试这样做:

statusMessages.addToControlFromResourceBundle("refArbor", "#{messages['error_refArborDoesntExist']}");

或者这个:

statusMessages.addToControlFromResourceBundle("refArbor", "error_refArborDoesntExist");

或者再次:

statusMessages.addToControlFromResourceBundle("refArbor", "#{msg.error_refArborDoesntExist}");

但显示的信息是:

error_refArborDoesntExist

而不是真正的信息。

如何使用我的bundle是一个Java类?

感谢。

4 个答案:

答案 0 :(得分:4)

我通常将资源包或资源注入类中并从那里使用它。 例如:

@In("#{messages['name']}")
private String name

或者,

@In
private Map<String, String> messages;

将resourceBundle注入Map。 (在这种情况下确保它的命名消息。)

答案 1 :(得分:2)

有很多方法可以做到。

StatusMessages.instance().addFromResourceBundle("msg.newCustomer);
//This will add the msg.newCustomer message to the view

String msg = org.jboss.seam.international.Messages.instance().get("msg.newCustomer);
//This will put the msg.newCustomer message in variable msg

答案 2 :(得分:1)

它正在使用您的解决方案:

@In
private Map<String, String> messages;

将messages.properties放在WEB-INF / classes /

答案 3 :(得分:1)

String msg = org.jboss.seam.international.Messages.instance().get("key")为我工作了!

使用实体bean时遇到了同样的问题。