使用纯JSF获取调用页面

时间:2011-09-08 16:27:11

标签: 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:// {主机:端口} /mybase/faces/mypage.jsp ...

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

我们希望以纯粹的“JSF”方式确定调用它的页面的URL(以便实现命令按钮“后退”按钮)。

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

    FacesContext facesContext = FacesContext.getCurrentInstance();
    ExternalContext externalContext = facesContext.getExternalContext();        
    HttpServletRequest origRequest = 
        (HttpServletRequest)externalContext.getRequest();
    String referrer = origRequest.getHeader("referer"); 

然而,这需要HttpServletRequest,它需要包含servlet-api.jar文件。

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

谢谢, 约翰

1 个答案:

答案 0 :(得分:5)

  

然而,这需要HttpServletRequest,它需要包含servlet-api.jar文件

这没有任何意义。 JSF本身已经具有Servlet API依赖性。也许您指的是IDE中的编译错误,因为项目根本没有与目标运行时相关联?在这种情况下,请仔细阅读:How do I import the javax.servlet API in my Eclipse project?

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

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