在 JSF 中使用 POST 请求导航到其他页面
Posted
技术标签:
【中文标题】在 JSF 中使用 POST 请求导航到其他页面【英文标题】:Navigate to other page using POST request in JSF 【发布时间】:2016-08-01 00:33:45 【问题描述】:在 JSF 中,我正在执行如下 GET 请求:
<p:button value="Select Document" icon="fa fa-save" outcome="index">
<f:param name="documento"
value="#dIGRCController.digrc.selectedDigrc.documento" />
</p:button>
我不想在 URL 中显示该值,因此我尝试发出 POST 请求。我怎样才能做到这一点?
在我的项目中,我使用 PrimeFaces 5.3、JSF 2.2 和 OmniFaces 1.11。
【问题讨论】:
【参考方案1】:使用commandButton
而不是button
。
您的 GET sn-p 的 POST 等效项如下:
<h:form>
<p:commandButton value="Select Document" icon="fa fa-save" action="index">
<f:param name="documento"
value="#dIGRCController.digrc.selectedDigrc.documento" />
</p:commandButton>
</h:form>
您只需要记住,网址更改不会反映在地址栏中,并且目标页面不再可收藏。如果目标页面不是幂等的,这应该不是问题,但它看起来不是一个(“SELECT”始终是幂等的)。
另见:
Difference between h:button and h:commandButton How to navigate in JSF? How to make URL reflect current page (and not previous one) Creating master-detail pages for entities, how to link them and which bean scope to choose【讨论】:
这有效,但是当我从 search.jsf 向 index.jsf 发出 POST 请求时,URL 未更新为 index.jsf。它保留为 search.jsf。我可以让它改变吗?另外,您能否解释一下页面幂等是什么意思?谢谢@BalusC 请参阅此衍生问题的第二和第三个“另请参阅”链接。 是的,刚看到哈哈。它使用 ?faces-redirect=true。谢谢楼主! 我希望您已经考虑过当最终用户将 URL 加入书签/复制粘贴/共享到不同的浏览器窗口甚至会话时,页面应该如何表现。以上是关于在 JSF 中使用 POST 请求导航到其他页面的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 HTML 表单的情况下以编程方式将 POST 请求发送到 JSF 页面?