jsf 2.0 primefaces 5.1 glassfish 4
我通过下拉列表使用过滤,当我点击列表中的项目时,数据表被过滤,但下拉列表中的值仍显示"选择一个"而不是选定的值
<p:column headerText="Region" filterBy="#{wan.Region}"
filterMatchMode="contains" >
<f:facet name="filter">
<p:selectOneMenu onchange="PF('table').filter()">
<f:selectItem itemLabel="Select One" itemValue="#{null}"
noSelectionOption="true" />
<f:selectItems value="#{wandbBean.regions}" />
</p:selectOneMenu>
</f:facet>
<h:outputText value="#{wan.Region}" />
</p:column>
答案 0 :(得分:2)
出现此问题是因为您未将value="#{wan.Region}"
设置为<p:selectOneMenu onchange="PF('table').filter()">
。
因此,确切的代码应该是
<p:column headerText="Region" filterBy="#{wan.Region}"
filterMatchMode="contains" >
<f:facet name="filter">
<p:selectOneMenu value="#{wan.Region}" onchange="PF('table').filter()">
<f:selectItem itemLabel="Select One" itemValue="#{null}"
noSelectionOption="true" />
<f:selectItems value="#{wandbBean.regions}" />
</p:selectOneMenu>
</f:facet>
<h:outputText value="#{wan.Region}" />
</p:column>
答案 1 :(得分:0)
您需要按以下步骤更改代码:
<p:column headerText="Region" filterBy="#{wan.Region}"
filterMatchMode="contains" >
<f:facet name="filter">
<p:selectOneMenu onchange="PF('table').filter()">
<f:selectItem itemLabel="Select One" itemValue="#{null}"
noSelectionOption="true" />
<f:selectItems value="#{wandbBean.regions}"
itemValue="#{wan.Region.VALUE}"
itemLabel="#{wan.Region.LABEL}" />
</p:selectOneMenu>
</f:facet>
<h:outputText value="#{wan.Region}" />
</p:column>
值是要传递给控制器的任何值,标签是要在下拉菜单中显示的任何值。 此解决方案适用于PrimeFace 8.0版,但我没有使用较早的版本进行检查。