JSF中是否还有从地址栏中获取URL(脚本名称),该地址栏指的是我所在的页面?会是什么样的?
答案 0 :(得分:1)
要在支持bean中获取请求URI,您需要从JSF的封面下获取HttpServletRequest
:
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
// ...
它提供several methods来获取有关请求的信息,例如getRequestURI()
。其中大多数也可以通过ExternalContext
的getRequestXXX()
方法获得,但请求URI不是。
在视图中,您可以#{request}
获取它。 E.g。
<a href="#{request.requestURI}">Click here to navigate recursively</a>
或者,如果您实际对JSF视图ID(您自己说的“脚本名称”)感兴趣,那么请使用UIViewRoot#getViewId()
:
String viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
// ...
或在视图中:
<a href="#{request.contextPath}#{facesContext.viewRoot.viewId}">Click here to navigate recursively</a>
或没有上下文路径:
<h:link outcome="#{facesContext.viewRoot.viewId}" value="Click here to navigate recursively" />