我在网上对此类问题进行了一些调查后,我仍然无法找到合适的解决方案。 我必须使用的技术堆栈是 JSF 1.x , JBoss Seam 2.2.x 和 richfaces 3.3.x 。所以场景是:
该页面包含两个主要部分,上部是为用户提供搜索结果的一些标准,下部是显示结果。 在这里,我使用richfaces.dataTable来填充结果。我们还提供了加载结果项详细信息的链接(h:commandLink)。 dataTable当然最初不是使用h:panelGroup的呈现属性显示的。 它看起来像:
<h:panelGroup rendered="#{results.size gt 0 and not showDetail}">
<rich:dataTable
id="results-table"
value="#{results}"
var="row"
rows="#{rowPerPage}"
styleClass="table"
rendered="#{not empty requests}">
......
<rich:column>
<f:facet name="header">
Action
</f:facet>
<h:commandLink value="DETAILS"
action="#{viewBean.showDetailContext(row)}"
styleClass="link">
</h:commandLink>
</rich:column>
......
</rich:dataTable>
</h:panelGroup>
代码:
@Scope(ScopeType.CONVERSATION)
@Name("result.view")
public class ResultView {
public void showDetailContext(T detailContext) throws Exception {
_detailContext = detailContext;
initListDetails();
setShowDetail(true);
}
protected void initListDetails() throws Exception {
//......
}
}
进行一些搜索后,用户界面将如下: View with Results
所以此时,用户可以点击“详细信息”链接并导航到详细信息视图,如: Details View
现在的问题是,当我们点击浏览器后退按钮时,我们将返回上一个“带结果的视图”,如果用户单击其他项目的详细信息链接,详细信息视图仍会显示以前的详细信息在截图中。
非常感谢任何建议。