2012-08-08 36 views
0

我想在JSF 2 中設置一個特定的元素,請告訴我該怎麼做。如何訪問JSF 2中的Set元素?

+0

你能提供一個你想要做什麼的例子嗎? – SJuan76 2012-08-08 09:29:30

+0

@ SJuan76,我希望能夠在下面的帖子中做一些設置http://stackoverflow.com/questions/8637285/how-to-get-specific-element-in-a-list-in- jsf-2 – 2012-08-08 09:41:27

+0

在這種情況下,你應該創建這樣的'公共List getSetAsList(){返回新的ArrayList(mySetVariable);}' – Daniel 2012-08-08 10:25:29

回答

8

此問題不是特定於JSF/EL。已經在普通Java中,不能訪問Set中的特定元素。 Set沒有像get(index)那樣的List。您需要將Set<T>轉換爲T[]陣列或List<T>,以便您可以通過索引訪問它。

僅當SortedSetLinkedHashSet的分辨率順序或插入順序分別插入元素時,它纔會以可預測的方式工作。當它是HashSet時,這不會有任何意義,因爲您無法事先可靠地預測元素將在哪個索引處結束。

如果您使用EL 2.2(您的問題歷史記錄證實了這一點),那麼您可以使用Set#toArray()將其轉換爲數組,然後使用大括號[]按索引訪問該元素。以下示例打印#{bean.someSet}的數組表示形式的第二項。

#{bean.someSet.toArray()[1]} 

再次,這是沒有意義的,如果它是一個無序的像HashSet

0

你的問題還不太清楚,但是JSF2並不真正支持Set

組件,如ui:repeath:datatable總是需要排序來顯示數據,所以你最好的選擇將是轉換你SetList第一。