1

我正在使用 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 users 它是一个 List 过滤用户它是一个 List

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

4

2 回答 2

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" 感兴趣

我希望我对你有所帮助。

于 2013-09-03T05:45:32.007 回答
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>
于 2013-09-03T09:39:09.863 回答