Primefaces数据表中的全局搜索不起作用

时间:2017-08-19 08:33:27

标签: java jsf primefaces filter datatable

这是我的xhtml页面

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">

  <h:body>
    <ui:composition template="#{templateSelection.selectedTemplate}">
      <ui:define name="docTitle">User Management</ui:define>
      <ui:define name="body">

        <h:form>

          <p:dataTable id="usrDT" var="usr" value="#{userListController.userBeans}"
                       rows="15" paginator="true"
                       rowIndexVar="row"
                       paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                       paginatorPosition="bottom"
                       filteredValue="#{userListController.filteredUserBeans}"
          >
            <f:facet name="header">
              User Management
              <p:outputPanel>
                <h:outputText value="Search all fields:"/>
                <p:inputText id="globalFilter" onkeyup="PF('usrDT').filter()" style="width:150px"
                             placeholder="Enter keyword"/>
              </p:outputPanel>
            </f:facet>
            <p:column filterBy="#{row + 1}" headerText="Sl No" width="4%">
              <h:outputText value="#{row + 1}"/>
            </p:column>
            <p:column filterBy="#{usr.userName}" headerText="User Name" width="30%">
              <h:outputText value="#{usr.userName}"/>
            </p:column>
            <p:column filterBy="#{usr.userLoginId}" headerText="User ID" width="8%">
            <h:outputText value="#{usr.userLoginId}"/>
          </p:dataTable>
        </h:form>
      </ui:define>
    </ui:composition>
  </h:body>
</html>

这是我的豆子

@ManagedBean
@ViewScoped
public class UserListController {

    @ManagedProperty("#{userServiceLayer}")
    private UserServiceLayer userServiceLayer;
    private List<UserBean> userBeans;
    private List<UserBean> filteredUserBeans;

    @PostConstruct
    public void init() {
        userBeans = userServiceLayer.getAllUserListForSearch(state, sessionScId);
    }

    public List<UserBean> getFilteredUserBeans() {
        return filteredUserBeans;
    }

    public void setFilteredUserBeans(List<UserBean> filteredUserBeans) 
    {
        this.filteredUserBeans = filteredUserBeans;
    }

    public List<UserBean> getUserBeans() {
        return userBeans;
    }

    public void setUserBeans(List<UserBean> userBeans) {
        this.userBeans = userBeans;
    }
}

我正在创建一个显示用户列表的数据表,我想在这里添加搜索功能。我在此处https://www.primefaces.org/showcase/ui/data/datatable/filter.xhtml添加了此内容。 在单列搜索工作正常......但全局搜索无法正常工作....

1 个答案:

答案 0 :(得分:0)

有一个名为widgetVar的属性可以帮助您解决上述问题。你必须使用如下 在数据表 widgetVar =“usrDT”中添加widgetVar (它将在您的网格中启用过滤器选项)

如果要清除过滤器,则可以使用以下代码 的 RequestContext.getCurrentInstance()执行。( “PF( 'usrDT')clearFilters()。”);

注意: widgetVar值是用户定义的