在 JSF 中实现 return 导航

Implementing a return navigation in JSF

我正在寻找一种 JSF 编码实践,它允许一个页面 link 到另一个页面,当它完成时,将 return 到原始页面。所以我有一个页面 viewDoc.xhtml 有这个:

        <f:metadata>
                <f:viewParam name="id" value="#{viewDoc.id}" />
        </f:metadata>

        ( bunch of stuff to show the document indicated by "id" )

        <p:button value="Edit Name/Title"
              outcome="editnametitle">
                <f:param name="id" value="#{param.id}" />
        </p:button>

然后我有一个页面 editnametitle.xhtml 有这个:

  <h:form>
     (input fields and stuff)
                <p:commandButton value="Save Changes"
                                 action="#{editNameTitle.doSave()}"
                                 />

                <p:commandButton value="Cancel"
                                 action="#{editNameTitle.doCancel()}"
                                 immediate="true"
                                 />
  </h:form>

那么我如何实现支持 bean 方法 doSave()doCancel() 以便当它们完成时导航回viewDoc.xhtml 包含文档的 id 参数?

我还没有找到任何解决方案的指导,而且我对到目前为止想到的任何方法都不满意。我想到了像添加到 p:button return 路径这样的东西:

<p:button value="Edit Name/Title"
      outcome="editnametitle">
      <f:param name="id" value="#{param.id}" />
      <f:param name="returnoutcome" value="viewDoc" />
</p:button>

这是正确的方法吗?或者是否有一些我错过的 JSF 工具可以做到这一点?

是的,如果这些请求是幂等的,基本上就是这样。

一个可能的改进是您可以动态获取当前视图ID,如下所示:

<f:param name="returnoutcome" value="#{view.viewId}" />

这允许在可重复使用的自定义标记中将其抽象化。
我个人也会使用参数名称 "from",因为它更短。