PrimeFaces 3.5.14使用FilterBy的DataTable

时间:2013-09-03 02:01:54

标签: jsf jsf-2 primefaces datatable

我正在使用PrimeFaces 3.5,我需要使用FilterBy组件的数据表。 在展示的情况下,它可以正常工作:http://www.primefaces.org/showcase/ui/datatableFiltering.jsf

好吧,当我做我的第一个过滤器,它的工作,它显示我的结果,但当我做第二个过滤器,它停止工作。

请参阅我的xHTML:

                                                                                       <p:dataTable id="users" 
                                              var="user" 
                                              value="#{userMB.users}" 
                                              rowKey="#{user.id}"
                                              selection="#{userMB.userSelected}" 
                                              selectionMode="single"
                                              rows="10"
                                              paginator="true"
                                              filteredValue="#{userMB.filteredUser}"
                                              paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"

                                    >

                                    <p:column headerText="Id" >
                                        #{user.id}
                                    </p:column>

                                     <p:column headerText="Login" filterBy="#{user.login}">
                                        #{user.login}
                                    </p:column>

                                </p:dataTable>     

观察:userMB是我的托管bean,@ SessionScoped 用户这是一个列表 filteredUser它是一个List

这一切......感谢关注:))

2 个答案:

答案 0 :(得分:1)

我也是新来的,但这个例子对我有用。 我在你的例子中看到了一些问题。

首先,如果你把var =“user”,那么rowKey =“#{userMB.id}”必须是rowKey =“#{user.id}” 同样在这里:

如您所见,我删除了filterValue =“#{usuario.login}”,因为我没有使用它。

最后这应该是这样的:

  <p:dataTable id="users" 
  var="user" 
  value="#{userMB.users}" 
  rowKey="#{user.id}"
  selection="#{userMB.userSelected}" 
  selectionMode="single"
  rows="10"
  paginator="true"
  filteredValue="#{userMB.filteredUser}"
  paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"

  >

      <p:column headerText="Id" >
      #{user.id}
      </p:column>

      <p:column headerText="Login" sortBy="#{user.login}" filterBy="#{user.login}">
      #{user.login}
      </p:column>

  </p:dataTable>

也许这不是问题,但我使用了@ViewScoped。

提示:您可能对filterMatchMode =“contains”

感兴趣

我希望我帮助过你。

答案 1 :(得分:0)

这是一个有效的PF3.5数据表,别忘了把它包装在

<p:dataTable id="surveyTable" var="survey" value="#{surveyBean.surveys}" widgetVar="surveysTable" 
                                     emptyMessage="Keine Umfragen zu diesem Suchbegriff vorhanden" filteredValue="#{surveyBean.filteredSurveys}" 
                                     paginator="true" rows="10"  
                                     paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                                     rowsPerPageTemplate="5,10,15">
                            <f:facet name="header">  
                                Liste der Umfragen 
                                <p:outputPanel>  
                                    <h:outputText value="Suchen:" />  
                                    <p:inputText id="globalFilter" onkeyup="surveysTable.filter()" style="margin-left:5px;width:150px" />  
                                </p:outputPanel>
                            </f:facet> 
                            <p:column id="idColumn" headerText="ID" filterBy="{survey.id}" filterMatchMode="contains">  
                                <h:outputText value="#{survey.id}" />  
                            </p:column>
                            <p:column id="titleColumn" filterBy="#{survey.title}" headerText="Bezeichnung" filterMatchMode="contains">  
                                <h:outputText value="#{survey.title}" />  
                            </p:column>
                            <p:column id="activeColumn" headerText="Aktiv" filterBy="#{survey.active}" filterOptions="#{surveyBean.surveyOptions}"  
                                      filterMatchMode="exact">   
                                <h:outputText value="#{survey.active}" />  
                            </p:column>
                            <p:column id="toggleColumn">  
                                <p:rowToggler />  
                            </p:column> 
                            <p:rowExpansion>  
                                <h:panelGrid id="display" columns="2" cellpadding="4" style="width:300px;"  
                                                styleClass=" ui-widget-content grid">  

                                    <f:facet name="header">  
                                        Details der Umfrage 
                                    </f:facet>  

                                    <h:outputText value="Bezeichnung:" />  
                                    <h:outputText id="model" value="#{survey.title}" />  

                                    <h:outputText value="Status:" />  
                                    <h:outputText id="year" value="#{survey.active}" />  

                                    <h:outputText value="ID:" />  
                                    <h:outputText value="#{survey.id}"/>   
                                </h:panelGrid>  

                            </p:rowExpansion> 
                        </p:dataTable>