2016-03-30 3 views
0

selectOneMenu JSFコンポーネントの項目を国際化する必要があります。データベースから受け取ったリストはどうすればできますか?私は今、私はどのようにこれを実装アイデアを持っていないため、選択した言語 に従ってdinamicaly変更値を必要とするためmapBean.actionsselectOneMenuを国際化する方法は、JSFのDataBaseから受け取った項目をドロップダウンしますか?

<p:selectOneMenu id="action" value="#{mapBean.newAction}" style="width:150px"> 
         <f:selectItem itemLabel="Action" itemValue="Empty" 
          noSelectionOption="false" /> 
         <f:selectItems value="#{mapBean.actions}" /> 
</p:selectOneMenu> 

+1

からソリューションですこれは参考になりましたか? http://stackoverflow.com/q/4375578 – BalusC

+0

私がこの記事で理解したように、値はENUMのものでしたが、私のアイデアはデータベースに値を入れました。たとえば、値と異なるロケール( 'en'、 'uk'、 'ru')を含むテーブルアクションを作成します。選択されたロケールに応じて、selectOneMenuの新しい値を取得します。私は、プロパティーファイルを使用せずに、値のデータベースを扱いたいだけです。 – Andrey

+0

ああ?これらのローカライズされた値はデータベース自体から来ますか?言い換えれば、それらのローカライズされた値は既に '#{mapBean.actions}'の中にありますか?それで、なぜあなたはそれに問題があるのか​​、私はもう理解していません。 – BalusC

答えて

1

「Locale」プロパティを持つオブジェクトのリストがあります。また、selectOneMenuに指定されたロケールを持つ項目だけを表示したいとします。あなたは、選択項目をフィルタリングするために、このような何かを行うことができます。

<p:selectOneMenu id="action" value="#{mapBean.newAction}" style="width:150px"> 
          <f:selectItem itemLabel="Action" itemValue="Empty" 
           noSelectionOption="false" /> 
          <f:selectItems value="#{mapBean.actions}" 
           var="item" itemDisabled="#{item.locale ne 'en'}"/> 
    </p:selectOneMenu> 

そして、無効のアイテムを表示しないように、あなたのページにCSSにこれを追加します。

.ui-selectlistbox-item.ui-state-disabled { 
    display: none; 
} 

これはthis answer