【问题标题】:Navigate to previous page with JSF使用 JSF 导航到上一页
【发布时间】:2014-08-03 20:01:01
【问题描述】:

我使用了一个支持 bean,我可以在其中保存表单并导航到此页面。

public String saveHere() {
    return Faces.getViewId() + "?faces-redirect=true&includeViewParams=true";
}

如何使用 OmniFaces 导航到上一页? 我的保存操作应该会导致我有“编辑”按钮的页面。 通常是一个列表视图(在非常项目旁边带有编辑按钮) 或其他页面(带有此项目的编辑按钮)

谢谢!

【问题讨论】:

    标签: jsf omnifaces


    【解决方案1】:

    您需要从某处导航的页面 ID。乍一看,将其保留在 Session 中似乎是一个好主意,但是,如果您在多选项卡中导航(通过不同的浏览器选项卡共享相同的 Http Session),这可能仍然存在冲突。

    话虽如此,最适合您的情况的解决方案是将视图参数传递给您的版本视图,告诉您来自哪里。应该就这么简单:

    <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 而不是查看参数。

    另请参阅:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      相关资源
      最近更新 更多