4

Tomcat 6.0.13でJSF 1.2Spring 2.5を使用しています。

コードの一部で、次のアプローチを使用してResourceBundleをロードしようとしています。

ResourceBundle.getBundle(context.getApplication().getMessageBundle(), Locale.EN);

問題は、getMessageBundle()メソッドがnullを返すことです。これは、以前はJSF 1.1で機能していました。何が問題なのか誰にもわかりませんか?

今のところ、バンドル名をハードコーディングしますが、すべての構成データが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>
4

2 に答える 2

3

イゴールB、

リソース注入を使用して、JSF にマネージド Bean に正しい ResourceBundle を提供させることができる場合があります。これにより、Java ソースに何かをハードコーディングする必要がなくなり、関連付けを適切に一元化できます。

バッキング Bean で管理プロパティを定義することから始めます。JSF 構成で、管理プロパティの値を、リソース バンドルを参照する EL 式に設定します。

Tomcat 6 を使用して次のようなことを行いました。唯一の注意点は、JSF がまだ初期化していないため、バッキング Bean のコンストラクターからこの値にアクセスできないことです。@PostConstructBean のライフサイクルの早い段階で値が必要な場合は、初期化メソッドで使用します。

<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>
于 2011-04-07T04:45:26.130 に答える
2

は、エントリではなく、エントリのgetMessageBundle()値を返します。<message-bundle>faces-config.xml<resource-bundle>

その値は、実際には JSF 1.2 API では利用できません。自分で指定する必要があります。

ResourceBundle bundle = context.getApplication().getResourceBundle(context, "org.mysite.MessageBundle");

<message-bundle>検証/変換メッセージ用です。おそらく、JSF 1.1 で実際にこれを使用したことがあるでしょう。

于 2010-12-02T12:07:44.243 に答える