Подтвердить что ты не робот

Получить текущую страницу программно

В поддержке JSF bean (управляемый Bean, Weld Bean, не имеет значения), я могу получить контекстный путь, на который клиент работает, вызывая

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

Это дает мне путь, к которому клиент обращается, например /myapplication. Можно ли также получить текущую страницу, например /home.faces, и как?

4b9b3361

Ответ 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();

Ответ 3

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

Ответ 4

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