JSF 1.2-1.2_07-b03-FCS
JSTL 1_1-mr2 (special build)
Java 1.6.0_22-b04Eclipse 3.6.0 (Helios)
Tomcat 6.0.28(也需要在Weblogic上运行)
IE 7.0.5730.13 Firefox: 6.0我们有页面:http://{主机:端口}/mybase/脸/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文件?
谢谢,约翰。
但是,这需要HttpServletRequest,这需要包含servlet-api.jar文件
这没有意义。JSF本身已经有一个Servlet API依赖项。也许您指的是IDE中的编译错误,因为项目根本没有与目标运行时相关联?在这种情况下,请仔细阅读:如何导入javax。我的Eclipse项目中的servlet API ?
对于具体问题,只需使用ExternalContext#getRequestHeaderMap()
获取请求头的映射。
String referrer = externalContext.getRequestHeaderMap().get("referer");
// ...