0

我有一个 Hashtable 我想在 selecteOneMenu 中显示它知道怎么做吗?

itemCat = new Hashtable<Integer,String>();
    itemCat.put(0,"Functional");
    itemCat.put(1, "Interoperability");
    itemCat.put(2, "Load");
    itemCat.put(3, "Performance");
    itemCat.put(4, "Disponibility");
    itemCat.put(5, "Security");
    itemCat.put(6, "Usability");
    itemCat.put(7, "Other");

 <p:selectOneMenu value="#{projectRequirementManagementMB.selectedCat}" filter="true" filterMatchMode="startsWith" >  
                                       <f:selectItem itemLabel="Select One" itemValue="" />  
                                <f:selectItems value=" {projectRequirementManagementMB.hereShouldbeCategoryValues}" />  
                                     </p:selectOneMenu>  

任何想法都会被欣赏

4

1 回答 1

1

<f:selectItems>已经支持的接口Map

<f:selectItems value="#{projectRequirementManagementMB.itemCat}" />

只需

public Map<Integer, String> getItemCat() {
   return itemCat;
}

但是,映射键被解释为项目标签,而映射值被解释为项目值。如果您无法在模型中交换映射键/值,则需要在视图中<f:selectItems>按如下方式交换它们,前提是您的环境支持 EL 2.2(您的问题历史证实了这一点)。

<f:selectItems value="#{projectRequirementManagementMB.itemCat.entrySet()}" 
     var="entry" itemValue="#{entry.key}" itemLabel="#{entry.value}" />

也可以看看:


与具体问题无关Hashtable,a是一个相当遗留的数据结构(来自 Java 1.0,1996 !!),您应该使用它的后继者HashMap。然而,这反过来又像Hashtable另一个问题:这些项目本质上根本没有订购。如果您想LinkedHashMap维护插入顺序,或者TreeMap如果您想对键进行自动排序,则可以使用。

itemCat = new LinkedHashMap<Integer, String>();
于 2012-11-22T12:28:18.593 回答