アプリの 1 つで国際化の問題に少し苦労しています。話は次のようになります。
レコードを表示するデータテーブルと、フィルタリングするデータテーブルの列を選択するための selectOneMenu があります。selectOne には、DataRefresh 時にバッキング Bean の実際のロケールに従って入力される SelectItems が供給されます。
これで、ユーザーがロケールを変更すると、selectOne のコンテンツは、ページが再レンダリングされるまで古いロケールのままになります。これは非常に論理的であり、予想されます。
もちろん、私はそれを変えたいと思っています。
そこで、再レンダリングせずに変更できるようにするために、languageFile エントリへの参照を含む selectItems を使用する独自の selectOne を作成してみました。
これが私が試したものです
<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 はアイテムに Label プロパティまたは Value プロパティがないことを教えてくれましたが、これはほとんど信じられません。;)
この方法でこのプロパティにアクセスする方法を知っている人はいますか?