2

マネージド Bean から受け取った値に基づいて resourcbundle 値を取得できる可能性を探しています。データテーブル、データグリッド、および値がレンダリングされるその他のコンポーネントで役立つ場合があります。

私はこのコードで試しました:

<h:outputText value="#{resourceBundle['myBean.myMsg']}" />

しかし、うまくいきませんでした。outputText が resourcebundle から値を取得できませんでした。結果は次のようになりました。

???myBean.myMsg
4

2 に答える 2

5

それが得られた場合、リソースファイルでmyBean.myMsg???myBean.myMsg文字列が見つからなかったことを意味します...

myBean.myMsg 内のキーを使用したいと思います (文字列myBean.myMsgではありません)。

''その場合は、それを囲む を削除するだけです

<h:outputText value="#{resourceBundle[myBean.myMsg]}" />

それ以外の場合は、EL 式ではなく文字列として使用されます

于 2013-03-06T07:28:28.113 に答える
1

次のように、すべてのビューでバンドルにアクセスしたい場合は、でバンドルを宣言するfaces-config.xml必要があります。

<application>
    <resource-bundle>
        <base-name>path-to-your-resource-bundle</base-name>
        <var>bundle</var>
    </resource-bundle>
</application>

ビューでアクセスできるように

<h:outputText value="#{bundle['myBean.myMessage']}" />

または、ビューに直接ロードします

<f:loadBundle basename="path-to-your-resource-bundle" var="bundle" />
<body>
    <h:outputText value="#{bundle['myBean.myMessage']}" />
</body>  

いずれにせよ、リソース バンドルには、メッセージの名前と値のペアを含む文字列が含まれている必要があります。

myBean.myMessage = This is my message

また、リソース バンドルはsrc/main/resourcesプロジェクトのフォルダーに配置する必要があることにも注意してください。したがって、bundle.properties上記のフォルダーにbase-namebundle.

使用に関して:

  • メッセージ バンドル自体の文字列を使用します。<h:outputText value="#{bundle['myBean.myMessage']}" />
  • バンドルから目的の文字列に評価されるマネージド Bean のプロパティを使用します<h:outputText value="#{bundle[myBean.myMessage]}" />

    @ManagedBean
    @...Scoped
    public class MyBean {
    
        private String myMeggase = "bundle.string";//getter + setter
    
    }
    
  • に値を格納します<ui:param>。これは、テンプレート化に役立つ場合があります。

    <ui:param name="bndl" value="#{myBean.myMessage}"/>
    <h:outputText value="#{bundle[bndl]}" />
    

    同じマネージド Bean を使用します。

于 2013-03-06T07:21:55.803 に答える