JSF 1.2应用程序.getMessageBundle()返回null
我在Tomcat6.0.13上将Spring2.5与JSF1.2一起使用 在代码的一部分中,我尝试使用以下方法加载ResourceBundle:JSF 1.2应用程序.getMessageBundle()返回null,jsf,resourcebundle,Jsf,Resourcebundle,我在Tomcat6.0.13上将Spring2.5与JSF1.2一起使用 在代码的一部分中,我尝试使用以下方法加载ResourceBundle: ResourceBundle.getBundle(context.getApplication().getMessageBundle(), Locale.EN); 问题是getMessageBundle()方法返回null。这通常与JSF 1.1一起使用。 有人知道问题出在哪里吗 现在,我将对bundle名称进行硬编码,但我更希望所有配置数据都放在f
ResourceBundle.getBundle(context.getApplication().getMessageBundle(), Locale.EN);
问题是getMessageBundle()方法返回null。这通常与JSF 1.1一起使用。
有人知道问题出在哪里吗
现在,我将对bundle名称进行硬编码,但我更希望所有配置数据都放在faces config中
资源束设置如下:
<application>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
<resource-bundle>
<base-name>org.mysite.MessageBundle</base-name>
<var>msgs</var>
</resource-bundle>
</application>
EN
org.mysite.MessageBundle
msgs
getMessageBundle()返回faces config.xml
中
项的值,而不是
项
JSF1.2API实际上无法提供它的值。你必须自己指定它
ResourceBundle bundle = context.getApplication().getResourceBundle(context, "org.mysite.MessageBundle");
用于验证/转换消息。可能您在JSF 1.1中实际使用过它。IgorB
您可以使用资源注入让JSF为托管bean提供正确的ResourceBundle。这将消除在Java源代码中硬编码任何内容的需要,并使关联很好地集中
首先在支持bean上定义托管属性。在JSF配置中,将托管属性的值设置为引用资源包的EL表达式
我使用Tomcat6做了如下工作。唯一需要注意的是,您不能从支持bean的构造函数访问这个值,因为JSF还没有初始化它。如果在bean生命周期的早期需要该值,则在初始化方法上使用@PostConstruct
<managed-bean>
...
<managed-property>
<property-name>messages</property-name>
<property-class>java.util.ResourceBundle</property-class>
<value>#{msg}</value>
</managed-property>
...
</managed-bean>
<application>
...
<resource-bundle>
<base-name>application_messages</base-name>
<var>msg</var>
</resource-bundle>
...
</application>
...
信息
java.util.ResourceBundle
#{msg}
...
...
应用程序消息
味精
...
Ok,我不知道JSF 1.2中缺少此功能。太多了!它在其他版本中也不存在。我希望它在2.0中的某个地方,但也没有。您一定混淆了resourcebundles(内容)和messagebundles(facesmessages)。