Primefaces 6.1 SelectOneMenu选择itemLabel作为值

时间:2017-10-25 05:51:39

标签: primefaces label jsf-2.2 selectonemenu

我使用PrimeFaces 6.1 SelectOneMenu渲染一个可编辑/过滤的下拉菜单,其itemLabel / value为selectItems。不幸的是,selectOneMenu选择itemLabel作为值将其放入我的selectOneMenu值字段中。这是一个非常烦人的问题,也许这是一个错误。

有我的代码段:

我使用Map将ID / Name对保存为selectItems:

Map<String,String> hm = new HashMap<String, String>();
hm.put("Cust001","John Dow");
hm.put("Cust002","Mark Polo");
hm.put("Cust003","Noel Max");

然后我把它放在我的selectOneMenu中:

<p:selectOneMenu id="selectCustomerId" value="#{paymentControlBean.selectedCustomerId}" effect="fold" editable="true" filter="true" filterMatchMode="startsWith">
   <p:ajax update="paymentListToolbar"/>
   <f:selectItems value="#{hm.entrySet()}" var="entry" itemValue="#{entry.key}" itemLabel="#{entry.value}"/>
</p:selectOneMenu>

下拉列表渲染工作正常,但是当我从下拉列表中选择一个然后按下它时。我的支持bean paymentControlBean.selectedCustomerId显示&#34; John Dow&#34;,这意味着,selectOneMenu选择我的itemLabel进入我的selectOneMenu的值字段。

我尝试将PrimeFaces元素更改为p:selectOneListBox并保持一切不变,重复处理,我的支持bean显示&#34; Cust001&#34;,这工作正常。

通过这个比较我发现,PrimeFaces 6.1中肯定存在严重错误,并且它也是PrimeFaces 5.2中存在的同样错误。

SelectOneMenu在下拉列表选择中非常流行,特别是当我们必须使用Map处理键/值对时。

如果它不是一个错误,我可以做什么或者有其他的工作来使它在我的selectItems中获得正确的值?

请告知&gt;

1 个答案:

答案 0 :(得分:1)

我已使用此PR修正了它:https://github.com/primefaces/primefaces/pull/2870

将在2017年11月发布的PrimeFaces 6.2版本中发布。