質問

私は自分のアプリケーションの一つに小さな国際化の問題に苦しんでいます。 物語はこのように書きます:

私はレコードを表示データテーブル、および順序でselectOneMenuを持っています 以下のためにフィルタリングされるのdataTableの列を選択します。 selectOneです における実際のロケールに応じて充填されている選択項目を供給 DataRefresh時間にBeanをバックアップ。

これで、ユーザーはロケールに中selectOne料金の内容を変更したとき ページまでの古いロケールが再レンダリングされます。これは非常に論理的と予想されます。

もちろん、私はそれを変更したいです。

だから私は、含まれている選択項目を使用して独自のselectOneを書いてみました languageFileエントリへの参照せずにそれらを変更することができるようにするために 再レンダリングます。

ここに私が試したものです。

<select id="j_id5:filterSelector" name="j_id5:filterSelector" size="1"> 
    <c:forEach var="item" items="#{gridBean.filterFields}">
        <option value="#{item.Value}">#{msg[item.Label]}</option>
    </c:forEach>
</select>

残念ながらJSFは、アイテムがラベルまたは値の特性を持っていない私に指示します 私はほとんど信じていません。 ;)

誰がどのようにthise性質をこのようにアクセスする考えを持っていますか?

役に立ちましたか?

解決 2

私は二回filterfieldsを格納して問題を解決しました。各言語の一度 - レンダリングされるランタイムdecission。ない素晴らしいものが、それは動作します。 Could'nt changeListenerですが軌道に乗る...

他のヒント

あなたが書く必要があります私には思えるます:

#{item.value}
代わりに#{item.Value}

、標準のJavaBeans慣習としてgetXyz()プロパティのゲッターxyzを持つことです。

また、なぜあなたはロケール選択のためのUIコンポーネントにvalueChangeListenerを提供しない、そして、その中に、そのロケールのために選択した項目のラベルを取り込みます。そのようにあなたが標準f:selectItemsタグを使用することができます。

また、それが自動的にあなたがそれをするために必要なものとするよう、それはので、あなたのコマンドのリンクがページを再レンダリング作ることができます。これはあなたの要件を満たしているかどうか分からないのです。 :)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top