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文件吗?
谢谢, 约翰
答案 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");
// ...