Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF 1.2应用程序.getMessageBundle()返回null_Jsf_Resourcebundle - Fatal编程技术网

JSF 1.2应用程序.getMessageBundle()返回null

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

我在Tomcat6.0.13上将Spring2.5JSF1.2一起使用

在代码的一部分中,我尝试使用以下方法加载ResourceBundle:

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