使用 o:form includeRequestParams="true" 排序时删除了 PrimeFaces 数据表过滤
PrimeFaces Datatable filtering removed when sorting with o:form includeRequestParams="true"
这是继此问题之后的一个问题:
使用 PrimeFaces-5.1 和 omnifaces-2.1 在使用请求参数时呈现具有分页、过滤和排序的数据表。
我的数据表是这样构造的:
<o:form includeRequestParams="true">
<p:dataTable id="hostStateHistoryTable" value="#{HostHistoryBean.hostStateHistoryList}" var="status" widgetVar="statusTable"
filteredValue="#{HostHistoryBean.filteredHostStateHistoryList}"
rowStyleClass="#{status.state eq 0 ? 'up' : null} #{status.state eq 1 ? 'down' : null} #{status.state eq 2 ? 'unreachable' : null}"
rows="50" paginator="true" paginatorTemplate="{PageLinks} {RowsPerPageDropdown}" rowsPerPageTemplate="10,50,100">
<p:column sortBy="#{status.stateTime}">
<f:facet name="header">Start Time</f:facet>
<h:outputText id="Start" value="#{status.stateTime}" />
</p:column>
... all columns
</p:dataTable>
</o:form>
但是排序正在删除 PrimeFaces 数据表筛选。
我可以单独排序和单独过滤没有问题,但是当我在过滤后对数据表进行排序时,它会删除过滤器。再次单击同一个过滤器不会执行任何操作,但对另一个值进行过滤将显示预期结果。
似乎 o:form 将重新发送请求,包括属性,而不是使用数据表 filteredValue。
编辑:
我在这里上传了一个基于 eclipse 的 MCVE 项目:http://www.dacave.fr/Whosebug/test.faces.rar
好的,所以我发现由于@RequestScoped,每个 ajax 调用都会重置 filteredValue。
我想我有点把事情搞混了。
所以我将所有@ManagedBeans 切换为@Named
然后我创建了一个具有大部分属性的新@SessionScoped Bean,并@inject 一个带有基于请求的属性的@RequestScoped bean。
现在一切正常
这是继此问题之后的一个问题:
使用 PrimeFaces-5.1 和 omnifaces-2.1 在使用请求参数时呈现具有分页、过滤和排序的数据表。 我的数据表是这样构造的:
<o:form includeRequestParams="true">
<p:dataTable id="hostStateHistoryTable" value="#{HostHistoryBean.hostStateHistoryList}" var="status" widgetVar="statusTable"
filteredValue="#{HostHistoryBean.filteredHostStateHistoryList}"
rowStyleClass="#{status.state eq 0 ? 'up' : null} #{status.state eq 1 ? 'down' : null} #{status.state eq 2 ? 'unreachable' : null}"
rows="50" paginator="true" paginatorTemplate="{PageLinks} {RowsPerPageDropdown}" rowsPerPageTemplate="10,50,100">
<p:column sortBy="#{status.stateTime}">
<f:facet name="header">Start Time</f:facet>
<h:outputText id="Start" value="#{status.stateTime}" />
</p:column>
... all columns
</p:dataTable>
</o:form>
但是排序正在删除 PrimeFaces 数据表筛选。 我可以单独排序和单独过滤没有问题,但是当我在过滤后对数据表进行排序时,它会删除过滤器。再次单击同一个过滤器不会执行任何操作,但对另一个值进行过滤将显示预期结果。 似乎 o:form 将重新发送请求,包括属性,而不是使用数据表 filteredValue。
编辑: 我在这里上传了一个基于 eclipse 的 MCVE 项目:http://www.dacave.fr/Whosebug/test.faces.rar
好的,所以我发现由于@RequestScoped,每个 ajax 调用都会重置 filteredValue。 我想我有点把事情搞混了。 所以我将所有@ManagedBeans 切换为@Named 然后我创建了一个具有大部分属性的新@SessionScoped Bean,并@inject 一个带有基于请求的属性的@RequestScoped bean。
现在一切正常