【发布时间】:2014-04-03 05:42:41
【问题描述】:
我正在过滤我的列并使用了分页,因此我已将我的支持 bean 会话设置为范围,我也将其设置为会话范围,因为我正在从 db 加载数据 n 不希望它重新加载。我正在使用查看按钮选择一列并转发到新页面以显示更多信息,并使用返回按钮返回主页。
现在我的问题是,当我过滤我的数据并点击查看按钮时,它会向我显示数据,但是当我点击后退按钮时,它会返回到主页,数据仍然被过滤,我知道这正在发生因为我已经使用了会话范围,过滤仍然存在。这样做的问题是,即使过滤了数据,它也不会显示过滤单元格中的值。要删除过滤,我必须在过滤单元格中输入一个值并将其删除以获取所有数据。我觉得我可能有设计缺陷,但不知道如何解决。
代码sn-p
主页
<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>
【问题讨论】:
-
发布您的答案作为答案,不要更新问题。
标签: java jsf primefaces