我有通用類與此簽名:如何在f:selectItems中爲枚舉創建和使用泛型bean?
public abstract class EnumListBean<E extends Enum<E>> {
public List<E> getEnumList() {
//implementation details
}
}
目前我有才能訪問enumList屬性的具體泛型參數來定義一個空的子類:
@ManagedBean
@ApplicationScoped
public class ItemRarityBean extends EnumListBean<Item.Rarity>{
}
這使得它能夠訪問屬性例如:
<f:selectItems value="#{itemRarityBean.enumList}" var="rarity"
itemLabel="#{rarity.readableName}" itemValue="#{rarity}" />
我想知道是否真的必須聲明一個派生bean,但無法訪問噸他通用類直接作爲bean:
<f:selectItems value="#{enumListBean<Item.Rarity>.enumList}" var="rarity"
itemLabel="#{rarity.readableName}" itemValue="#{rarity}" />
你會發現[OmniFaces'<○:importConstants>'](https://showcase-omnifaces.rhcloud.com/showcase/taghandlers/importConstants.xhtml)是有用的。 – BalusC 2012-07-17 19:03:52
在您的具體情況下,即使EL可以訪問具體的參數化類型,它也可能不會有用。由於類型擦除,'new EnumListBean .getEnumList()'不返回除'new EnumListBean .getEnumList()'以外的任何內容,而不傳遞類型標記。你可以做的是僞造一個索引屬性,並且有一個可以通過'Class'索引的bean,該類返回它的值列表,但我不確定是否可以在EL中使用類文字。 –
millimoose
2012-07-17 19:07:30
@BalusC哇,幾乎是我想要達到的確切的東西。一個''輸入的枚舉是否可以和''一起用作列表? –
Paranaix
2012-07-17 19:12:13