【问题标题】:Displaying a Hashtable in a selectedOneMenu list在 selectedOneMenu 列表中显示 Hashtable
【发布时间】:2012-11-22 10:59:06
【问题描述】:

我有一个哈希表,我想在 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>  

任何想法都会被欣赏

【问题讨论】:

    标签: jsf primefaces hashtable selectonemenu


    【解决方案1】:

    &lt;f:selectItems&gt; 已经支持Map 接口:

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

    只有

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

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

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

    另见:


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

    itemCat = new LinkedHashMap<Integer, String>();
    

    【讨论】:

      猜你喜欢
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2014-04-20
      • 1970-01-01
      • 2015-05-03
      • 2013-01-03
      • 1970-01-01
      相关资源
      最近更新 更多