在 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",因为它更短。
我正在寻找一种 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",因为它更短。