如何使用 FacesContext 在 JSF 中获取以前的 URL?

Posted

技术标签:

【中文标题】如何使用 FacesContext 在 JSF 中获取以前的 URL?【英文标题】:How to get previous URL in JSF using FacesContext? 【发布时间】:2015-04-04 21:22:01 【问题描述】:

我需要使用FacesContext 在 JSF 中获取重定向的 URL 或 ID。对于当前 URL,我正在使用。

String currentPage = FacesContext.getCurrentInstance().getViewRoot().getViewId();

【问题讨论】:

【参考方案1】:

您可以通过ExternalContext#getRequestHeaderMap()获得最近的the referer header:

String referrer = externalContext.getRequestHeaderMap().get("referer"); 
// ...

您应该只记住这是一个客户端控制的值,因此可以从客户端完全欺骗(即最终用户可以轻松编辑甚至删除它)。

即便如此,在某些情况下客户端应用程序也不会发送它。有关概述,请参阅以下问题:In what cases will HTTP_REFERER be empty。

根据功能需求,您最好手动将其作为请求参数传递,或者将其存储在视图或会话范围内。

【讨论】:

谢谢。我得到了完整的网址。在 getViewId() 中,我将获得当前页面名称,例如“login.xhtml”。我需要那样。有没有其他代码可以做到这一点。 谢谢,我会分隔网址并继续。

以上是关于如何使用 FacesContext 在 JSF 中获取以前的 URL?的主要内容,如果未能解决你的问题,请参考以下文章

FacesContext 在带有 JSF 2.3 的 Wildfly 14 中不可注入(Mojarra,主模块)

XSP JSF FacesContext addMessage 并不总是有效

JSF - JUnit FacesContext模拟测试

如何显示 JSF 成功消息

如何检测当前的 JSF 版本?

如何在 JSF 2.0 中使会话无效?