使用纯JSF获取调用页面
JSF 1.2-1.2_07-b03-FCS JSTL 1_1-mr2(特殊建造) Java 1.6.0_22-b04 Eclipse 3.6.0(太阳神) Tomcat 6.0.28(也需要在Weblogic上运行) IE 7.0.5730.13 Firefox:6.0 我们有第页: http://{host:port}/mybase/faces/mypage.jsp 它通过超链接、重定向等从多个外部页面调用 我们希望以纯“JSF”的方式确定调用它的页面的URL(以便实现命令按钮“后退”按钮) 我们知道我们可以做到这一点:使用纯JSF获取调用页面,jsf,Jsf,JSF 1.2-1.2_07-b03-FCS JSTL 1_1-mr2(特殊建造) Java 1.6.0_22-b04 Eclipse 3.6.0(太阳神) 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");
但是,这需要HttpServletRequest,它需要包含servlet-api.jar文件
问题是:这可以用纯JSF的方式来完成,因此,不包括servlet-api.jar文件吗
谢谢,
约翰
但是,这需要HttpServletRequest,它需要包含servlet-api.jar文件
这毫无意义。JSF本身已经有一个ServletAPI依赖项。可能您指的是IDE中的编译错误,因为该项目根本没有与目标运行时关联?在这种情况下,请仔细阅读:
至于具体问题,只需使用获取请求头的映射即可
String referrer = externalContext.getRequestHeaderMap().get("referer");
// ...
是的,它起作用了。走了很多错误的路,但错过了getRequestHeaderMap()。非常感谢。约翰努奇!-我明白了。事实上,我花在API上的时间确实比我承认的要多——只是在寻找错误的东西。许多互联网搜索,但没有发现像您的解决方案那样干净。约翰诺问题。它有助于记住
ExternalContext
是JSF在幕后使用的“原始”ServletAPI类和方法的关键入口点,例如HttpServletRequest
,HttpServletResponse
,HttpSession
和ServletContext
。确实有很多有成就感的人。我的答案中的ExternalContext
部分可以单击,并直接指向API文档。