以编程方式获取当前页面

2022-08-31 15:19:18

在 JSF 支持 Bean(受管 Bean、Weld Bean,无关紧要)中,我可以通过调用来获取客户端所在的上下文路径

FacesContext ctx = FacesContext.getCurrentInstance();
String path = ctx.getExternalContext().getRequestContextPath();

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


答案 1

你通常想使用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>


答案 2

好的,知道了,它是

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

推荐