我正在过滤我的列并使用分页,所以我使我的后备 Bean 会话限定范围,我也使它成为会话范围,因为我正在从 db n 加载数据不希望它重新加载。 我正在使用查看按钮选择一列并转发到新页面以显示更多信息,并在那里使用后退按钮返回主页。
现在我的问题是,当我过滤数据并点击查看按钮时,它向我显示数据,但是当我点击后退按钮 n 时,它返回到主页,数据仍然被过滤,我知道这种情况正在发生,因为我使用了会话范围 n 过滤是持久的。这样做的问题是,即使认为数据被过滤,它也不会在过滤的过滤单元格中显示值。要删除过滤,我必须在过滤单元格中输入一个值并将其删除以取回所有数据。我觉得也许我有一个设计缺陷,但无法弄清楚如何解决它。
代码片段
主页
<p:dataTable var="curridea" value="#{userIdea.ideas}" filteredValue="#{userIdea.filteredideas}"
paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15">
<p:column headerText="Employee Name" filterBy="empname"
filterMatchMode="contains">
<h:outputText value="#{curridea.empname}" />
</p:column>
<p:column headerText="View">
<h:commandButton value="view" action="#{userIdea.actionController}" >
<f:setPropertyActionListener value="#{curridea}" target="#{userIdea.selectedidea}" />
</h:commandButton>
</p:column>
查看页面
<h1 class="title">Your idea Here</h1>
<h:form>
<h:outputText value="#{userIdea.selectedidea.idea}" escape="false" />
<h:commandButton value="back" action="#{userIdea.returnController}" >
</h:commandButton>
用户理念
private ArrayList<Idea> filteredideas;
public ArrayList<Idea> getFilteredideas() {
return filteredideas;
}
public void setFilteredideas(ArrayList<Idea> filteredideas) {
this.filteredideas = filteredideas;
}
更新:我通过将"查看页面后退"按钮中的过滤想法设置为空来解决它,但请让我知道是否有我没有看到的更好的解决方案
<h:commandButton value="back" action="#{userIdea.returnController}" >
<f:setPropertyActionListener value="" target="#{userIdea.filteredideas}" />
</h:commandButton>
我通过将"查看页面后退"按钮中的过滤想法设置为空来解决它,但请让我知道是否有我没有看到的更好的解决方案
<h:commandButton value="back" action="#{userIdea.returnController}" >
<f:setPropertyActionListener value="" target="#{userIdea.filteredideas}" />
</h:commandButton>