首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在JSF bean中获取请求URL?

在JSF bean中获取请求URL?
EN

Stack Overflow用户
提问于 2010-07-22 03:17:19
回答 3查看 46.3K关注 0票数 19

如何在支持JSF页面的bean中获取请求URL?我一直在看FacesContext文档,我能找到的最好的方法似乎太长了:

public String getRequestURL()
{
    Object request = FacesContext.getCurrentInstance().getExternalContext().getRequest();
    if(request instanceof HttpServletRequest)
    {
            return ((HttpServletRequest) request).getRequestURL().toString();
    }else
    {
        return "";
    }
}

编辑:功能要求这里的要求是我们需要一个第三方javascript实用程序的完整。该实用程序的使用或体系结构不适合JSF,但除了此调用之外的所有内容都适合。我发现的方法是可行的,但是深入研究FacesContext是错误的。另外,我希望有一种方法可以被JSF表达式语言调用,因为它将以与“视图”相关的方式使用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-22 05:21:53

如果您曾经需要通过FacesContext从JSF底层获取原始Servlet API,那么很可能您在错误的地方完成了这项工作。这是什么,您认为这是正确的解决方案的功能需求?您是否应该使用真正的Servlet类或Filter,而不是JSF托管bean?或者,您可能根本不需要请求URL,因为有更好的"jsfish“方法可以实现同样的目的?

如果您更新您的问题以包括有关功能需求的详细信息,那么我们可能能够提出正确的解决方案。

根据您的编辑更新:那么,您只需要在视图端使用它吗?例如,#{bean.requestURL}?您也可以直接从EL中已经隐式提供的HttpServletRequest对象中获取它。

当您使用JSP时:

${pageContext.request.requestURL}

或者当你使用Facelets时:

#{request.requestURL}

现在,你如何在JavaScript中使用它呢?是否打印为JavaScript变量?像这样吗?

var url = '#{request.requestURL}';

如果是这样的话,你也可以抓取window.location来实现。

var url = window.location;

不需要在JSF bean中添加特定于视图的详细信息。

票数 31
EN

Stack Overflow用户

发布于 2010-07-22 03:30:06

您已经有了答案:)恐怕您必须以这种方式使用它,因为每个HTTP请求都必须从faces上下文中检索。当然,您可以简化此方法的某些部分,如faces上下文检索,但这绝对是可行的方法,除非您使用某种框架将这些细节抽象出来,并让您直接访问HttpRequest对象。

致以问候。

票数 3
EN

Stack Overflow用户

发布于 2021-10-12 22:44:21

您可以获取所有参数的url,如下所示:

HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext()
                    .getRequest();
String url = req.getHeader("referer");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3302933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档