我使用支持bean,我可以保存表单并导航到此页面。
public String saveHere() {
return Faces.getViewId() + "?faces-redirect=true&includeViewParams=true";
}
如何使用OmniFaces导航到上一页? 我的保存操作应该导致我有“编辑”按钮的页面。 通常是列表视图(非常项旁边的编辑按钮) 或其他页面(带有此项目的编辑按钮)
谢谢!
答案 0 :(得分:1)
您需要从某个地方导航的页面ID。初看起来,将它保存在Session中似乎是一个好主意,但是,如果您在多选项卡中导航(通过不同的浏览器选项卡共享相同的Http会话),这可能仍然保留在coflict中。
话虽如此,对于您的案例,最合适的解决方案是将视图参数传递给您的版本视图,告诉您来自哪里。这应该就这么简单:
<h:button outcome="edit" value="Edit registry">
<f:param name="pageFrom" value="#{view.viewId}" />
</h:button>
之后,在您的版本视图中将此参数绑定到您的bean:
<f:metadata>
<f:viewParam name="pageFrom" value="#{editBean.pageFrom}" />
</f:metadata>
只需在保存后重定向到 EditBean.java 中的该视图,假设它是@ViewScoped
:
public String saveHere() {
//save here
return pageFrom + "?faces-redirect=true&includeViewParams=true";
}
这是达到你要求的最直接的方式。但是,您必须考虑您来自哪里的页面仍然是一个视图参数,因此最终用户可以在那里键入他想要的内容。通过这种行为,他可以实现重定向到其他页面而不是预期的页面。如果您想避免这种情况,请使用the flash scope代替查看参数。
另见: