ポーリングがテーブルを更新している間、ソートとフィルタリングを保持しようとしています。残念ながら、私はそれを行うことができませんでした。
ポーリングによって dataTable が 2 秒ごとまたは任意の間隔で更新されると、フィルター値が削除され、列をクリックすると、列ヘッダーが何回クリックされても昇順でのみ並べ替えられます。また、並べ替えの矢印は常に「降順」と表示されます。
何か見落としがない限り、これは 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>