我使用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;
答案 0 :(得分:1)
我已使用此PR修正了它:https://github.com/primefaces/primefaces/pull/2870
将在2017年11月发布的PrimeFaces 6.2版本中发布。