jsf - 在 primefaces 中,数据表排序和过滤未通过轮询保留

标签 jsf sorting web primefaces polling

我一直在尝试在 poll 更新表时保留排序和过滤。不幸的是,我没能做到这一点。

当数据表每两秒或任何时间间隔通过轮询刷新时,过滤器值将被删除,并且单击列时,无论单击列标题多少次,都仅按升序排序。此外,排序箭头始终显示为“降序”。

除非我错过了什么,否则我认为这是 dataTable 中的一个错误。

请看一下这个,如果这是一个错误,或者我的实现不正确,请告诉我。几天来我一直在努力让它发挥作用。任何帮助将不胜感激。

            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml"
               xmlns:ui="http://java.sun.com/jsf/facelets"
               xmlns:h="http://java.sun.com/jsf/html"
               xmlns:f="http://java.sun.com/jsf/core"
               xmlns:p="http://primefaces.prime.com.tr/ui">

            <f:view contentType="text/html">

               <h:head>
               </h:head>

               <h:body>

                  <h:form id="pollForm">
                     <p:poll id="poll" widgetVar="pollVar" interval="2"
                        listener="#{tableBean.update}" async="true" autoStart="true" />
                  </h:form>

                  <h:form>

                     <p:outputPanel autoUpdate="true">
                        <p:dataTable var="car" value="#{tableBean.carsSmall}">
                           <f:facet name="header">  
                              Ajax Sorting  
                          </f:facet>

                           <p:column sortBy="#{car.model}">
                              <f:facet name="header">
                                 <h:outputText value="Model" />
                              </f:facet>
                              <h:outputText value="#{car.model}" />
                           </p:column>

                           <p:column sortBy="#{car.year}">
                              <f:facet name="header">
                                 <h:outputText value="Year" />
                              </f:facet>
                              <h:outputText value="#{car.year}" />
                           </p:column>

                           <p:column sortBy="#{car.manufacturer}" 
                              filterBy="#{car.manufacturer}">
                              <f:facet name="header">
                                 <h:outputText value="Manufacturer" />
                              </f:facet>
                              <h:outputText value="#{car.manufacturer}" />
                           </p:column>

                           <p:column sortBy="#{car.color}">
                              <f:facet name="header">
                                 <h:outputText value="Color" />
                              </f:facet>
                              <h:outputText value="#{car.color}" />
                           </p:column>
                        </p:dataTable>
                     </p:outputPanel>
                  </h:form>

               </h:body>

            </f:view>
            </html>

最佳答案

您可以尝试为您的dataTable提供一个Id,然后调用dataTableId.filter吗?它对我有用。

<p:poll id="pollAutoUpdate" interval="5" oncomplete="entityTable.filter()" autoStart="false" stop="true" widgetVar="myPoll" />

关于jsf - 在 primefaces 中,数据表排序和过滤未通过轮询保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17675382/

相关文章:

unit-testing - JSFUnit 是否测试 Web 应用程序的所有方面?

jsf - c :when and c:if don't work

java - 在java web应用程序中哪里将arrayList类型变量定义为静态?

jsf - EJB 依赖 FacesContext 是一个糟糕的设计吗?

algorithm - 如何将点重新分配/强制到网格中以使移动量最小?

http - 有什么方法可以自定义 HTTP 响应状态?

python - 对 NumPy 数组进行排序

sorting - 如何在Elasticsearch中按计算值排序

javascript - 按后退按钮时忽略重定向页面

javascript - 如何从 .t​​xt Javascript 导入用户名/密码