Primefaces dataTable过滤器selectOneMenu不起作用

时间:2016-03-14 15:31:09

标签: jsf primefaces

我正在使用PrimeFaces 5.1,在我的项目dataTable中过滤used.In文本过滤器工作正常,但下拉过滤器不能正常工作(即)在下拉列表我显示部门,我第一次从下拉列表中选择任何值是工作正常anothertime我选择dropdown它不返回dataTable中显示的任何值。我从dropdown中选择一个第一个值也会抛出空指针异常。

<p:dataTable id="datalist" widgetVar="datalist" var="user" value=#{beanList.userList}>
<p:column headerText="Department" filterBy="#{user.deptname}"
            filterMatchMode="exact" >
      <f:facet name="filter">
          <p:selectOneMenu onchange="PF('datalist').filter()">
                <f:selectItem itemLabel="ALL" itemValue="#{null}"
                              noSelectionOption="true" />
                <f:selectItems value="#{datalist.deptList}" />
          </p:selectOneMenu>
      </f:facet>
      <h:outputText value="#{user.depatname}" />
</p:column>
</p:dataTable>

我怀疑是默认值全部点击,第二次选择任何值返回null或数据表中没有数据显示。

1 个答案:

答案 0 :(得分:0)

由于我不知道您的Managed Bean的范围:尝试一个比请求更长的范围(参见PrimeFaces 5.1用户文档),并提供一个值&#34; filteredValue&#34;对于你的桌子,像这样:

<p:dataTable id="datalist" widgetVar="datalist" var="user"
value="#{beanList.userList}" filteredValue="#{beanList.filteredUserList}">

这样,您确保将过滤的表/列表保留在托管bean的字段中,并且内容不会丢失。 另外,请确保您的Managed Bean类是可序列化的(See this stackoverflow post