以编程方式获取当前页面

时间:2010-07-15 08:50:52

标签: java jsf jsf-2

在JSF支持bean(Managed Bean,Weld Bean,无关紧要)中,我可以通过调用

来获取客户端所在的上下文路径
FacesContext ctx = FacesContext.getCurrentInstance();
String path = ctx.getExternalContext().getRequestContextPath();

这为我提供了客户端当前访问的路径,例如/myapplication。 是否也可以获取当前的页面,例如/home.faces,以及如何?

4 个答案:

答案 0 :(得分:112)

您通常希望使用UIViewRoot#getViewId()

String viewId = facesContext.getViewRoot().getViewId();

这在EL中也可用如下:

#{view.viewId}

这个值在导航案例结果中可以重复使用,例如<h:link outcome><h:button outcome>


或者,您也可以使用HttpServletRequest#getRequestURI()来获取最终用户在浏览器地址栏中实际看到的内容。

String uri = ((HttpServletRequest) externalContext.getRequest()).getRequestURI();

EL中的哪个也可用如下:

#{request.requestURI}

这个值在<h:outputLink value>或普通<a href>中可以重复使用。请注意,您不能将其用作导航案例结果。

答案 1 :(得分:13)

好的,明白了,它是

FacesContext ctx = FacesContext.getCurrentInstance();
HttpServletRequest servletRequest = (HttpServletRequest) ctx.getExternalContext().getRequest();
// returns something like "/myapplication/home.faces"
String fullURI = servletRequest.getRequestURI();

答案 2 :(得分:3)

String uri = ((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getRequestURI();

答案 3 :(得分:-1)

 String str = ((HttpServletRequest) FacesContext.getCurrentInstance() 
 .getExternalContext().getRequest()).getRequestURI(); 
 System.out.println(str);