質問

私は使用しています 春2.5JSF 1.2, 、 の上 Tomcat 6.0.13.

コードの一部では、ロードしようとしています ResourceBundle 次のアプローチを使用することにより:

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

問題はそれです getMessageBundle() メソッド返品 ヌル. 。これは使用されていました JSF 1.1. 。誰かが何が問題になるのか考えていますか?

今のところ、ハードコードバンドル名に行きますが、すべての構成データが内部に配置される場合はお好みです facesconfig.

リソースバンドルは次のように設定されています。

    <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>
役に立ちましたか?

解決

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で使用しました。

他のヒント

イゴルブ、

リソースインジェクションを使用して、JSFにマネージドビーンに正しいリソースバンドルを提供させることができる場合があります。これにより、Javaソースの何かをハードコードし、協会をうまく集中化する必要性が削除されます。

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

Tomcat 6を使用して次のようなことをしました。唯一の注意点は、JSFがまだ初期化されていないため、Backing 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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top