0

Seam2.2アプリケーションのサーバー側でResourceBundleをロードする際に問題が発生しました。

クライアント側(JSF)では、リソースバンドルを使用しても問題ありません。

<f:facet name="header">#{message['addTest.header.add']}</f:facet>

ただし、サーバー側では、リソースバンドルを使用する方法はありません。

次の方法を試しましたが、解決策がありません。

  • StatusMessageに追加:StatusMessage.addFromResourceBundle(serverity.ERROR、 "key_string");
  • この質問のようにインジェクションを使用します:Seamを使用してJavaクラスでメッセージバンドルを使用します
  • リソースバンドルのロード:

    private java.util.ResourceBundle getResourceBundle(){org.jboss.seam.core.ResourceLoader resourceLoader = org.jboss.seam.core.ResourceLoader .instance(); java.util.ResourceBundle resourceBundle = resourceLoader.loadBundle( "message"); resourceBundleを返します。}

ただし、このメソッドの結果はnullです。

任意のアイデアやガイダンスは高く評価されます。

4

1 に答える 1

0

問題が見つかりました。3番目の方法が機能します。

これは、プロジェクトで 2 つのリソース バンドルを使用しているためです。1 つはメッセージ (共通) で、もう 1 つは myMessage です。

最初に、ファイル components.xml でリソース バンドルを定義するときに、myMessage リソース バンドルのみを定義します。

<core:resource-loader bundle-names="my">
        <core:bundle-names>
            <value>myMessage</value>
        </core:bundle-names>
</core:resource-loader>

ファイル faces-config.xml で、言語サポートを定義しました。

<application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
        <locale-config>
            <default-locale>en</default-locale>
            <supported-locale>bg</supported-locale>
            <supported-locale>de</supported-locale>
            <supported-locale>en</supported-locale>
            <supported-locale>fr</supported-locale>
            <supported-locale>tr</supported-locale>
            <supported-locale>ja</supported-locale>
        </locale-config>

        <message-bundle>messages</message-bundle>

    </application>

3 番目の方法を使用する場合は、メッセージ バンドルのみが返されます。

これを修正するには、ファイル components.xml にメッセージ バンドルを追加し、core:resource-loader の名前を削除するだけです。

<core:resource-loader>
        <core:bundle-names>
            <value>messages</value>
            <value>myMessage</value>
        </core:bundle-names>
</core:resource-loader>

それでおしまい。

于 2012-03-27T07:43:16.427 に答える