我正在寻找一种JSF编码实践,它将允许一个页面链接到另一个页面,当它完成时,将返回到原始页面。所以我有一个页面 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:按钮中添加返回路径,如:
<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",因为这样更短。