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



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



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


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

544   4  

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

    Ничего не найдено.