Получить текущую страницу программно
в JSF backing bean (управляемый Bean, Weld Bean, не имеет значения) я могу получить путь контекста, на котором находится клиент, вызвав
FacesContext ctx = FacesContext.getCurrentInstance();
String path = ctx.getExternalContext().getRequestContextPath();
Это дает мне путь, к которому клиент в настоящее время обращается, например /myapplication.
Можно ли также получить текущий страница, как /home.faces и как?
4 ответов:
вы обычно хотите использовать
UIViewRoot#getViewId()для этого.String viewId = facesContext.getViewRoot().getViewId();это в EL также доступно следующим образом:
#{view.viewId}именно это значение можно повторно использовать в результатах навигации, таких как
<h:link outcome>и<h:button outcome>.
кроме того, вы также можете использовать
HttpServletRequest#getRequestURI()чтобы получить то, что пользователь видит в адресной строке браузера.String uri = ((HttpServletRequest) externalContext.getRequest()).getRequestURI();, который находится в Эль-также доступны в качестве следует:
#{request.requestURI}именно это значение можно повторно использовать в
<h:outputLink value>или обычный<a href>. Обратите внимание, что вы не можете использовать его в качестве результата навигации случай.
хорошо, понял, это
FacesContext ctx = FacesContext.getCurrentInstance(); HttpServletRequest servletRequest = (HttpServletRequest) ctx.getExternalContext().getRequest(); // returns something like "/myapplication/home.faces" String fullURI = servletRequest.getRequestURI();
String uri = ((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getRequestURI();
String str = ((HttpServletRequest) FacesContext.getCurrentInstance() .getExternalContext().getRequest()).getRequestURI(); System.out.println(str);
Comments