JSF 2 の Set で特定の要素を取得したいのですが、その方法を教えてください。
2 に答える
この問題は、JSF/EL に固有のものではありません。プレーンな Java では、特定の要素にアクセスすることはできませんSet
。has には has のようなSet
メソッドはありません。インデックスでアクセスできるように、 を配列またはに変換する必要があります。get(index)
List
Set<T>
T[]
List<T>
SortedSet
これは、要素がそれぞれソート順またはLinkedHashSet
挿入順で挿入されるときにのみ、予測可能な方法で機能します。HashSet
要素がどのインデックスで終了するかを事前に確実に予測できないため、これは意味がありません。
EL 2.2を使用している場合(質問履歴でこれが確認されています)、使用Set#toArray()
して配列に変換し、ブレース表記[]
を使用してインデックスで要素にアクセスできます。以下の例では、 の配列表現の 2 番目の項目を出力します#{bean.someSet}
。
#{bean.someSet.toArray()[1]}
繰り返しますが、これは のような順序付けられていないセットの場合は意味がありませんHashSet
。
あなたの問題はまったく不明ですが、JSF2 は実際には Set をサポートしていません。
コンポーネントは、データを表示するために常に並べ替えが必要なui:repeat
ためh:datatable
、最初Set
に変換することをお勧めしますList
。