使用纯JSF获取调用页面

Joh*_*n K 3 jsf

JSF 1.2-1.2_07-b03-FCS

JSTL 1_1-mr2(特别版)

Java 1.6.0_22-b04

Eclipse 3.6.0(Helios)

Tomcat 6.0.28(也需要在Weblogic上运行)

IE 7.0.5730.13

Firefox:6.0

我们有页面:http:// {host:port} /mybase/faces/mypage.jsp ...

它通过超链接,重定向等从多个外部页面调用.

我们想要以纯粹的"JSF"方式确定调用它的页面的URL(以便实现命令按钮"后退"按钮).

我们知道我们可以这样做:

    FacesContext facesContext = FacesContext.getCurrentInstance();
    ExternalContext externalContext = facesContext.getExternalContext();        
    HttpServletRequest origRequest = 
        (HttpServletRequest)externalContext.getRequest();
    String referrer = origRequest.getHeader("referer"); 
Run Code Online (Sandbox Code Playgroud)

但是,这需要HttpServletRequest,它需要包含servlet-api.jar文件.

问题:这可以用纯JSF方式完成,因此不包括servlet-api.jar文件吗?

谢谢,约翰

Bal*_*usC 5

但是,这需要HttpServletRequest,它需要包含servlet-api.jar文件

这毫无意义.JSF本身已经具有Servlet API依赖性.也许您指的是IDE中的编译错误,因为项目根本没有与目标运行时相关联?在这种情况下,请仔细阅读:如何在Eclipse项目中导入javax.servlet API?

至于具体问题,只需使用ExternalContext#getRequestHeaderMap()获取请求标头的映射.

String referrer = externalContext.getRequestHeaderMap().get("referer"); 
// ...
Run Code Online (Sandbox Code Playgroud)