62 votes

Obtenir la page actuelle par programme

Dans un bean de support JSF (Bean géré, Weld Bean, peu importe), je peux obtenir le chemin du contexte dans lequel se trouve le client en appelant

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

Cela me donne le chemin d'accès actuel du client, tel que /myapplication . Est-il également possible d’obtenir la page actuelle, comme /home.faces , et comment?

114voto

BalusC Points 498232

Normalement, vous voudrez utiliser UIViewRoot#getViewId() pour cette.

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

C'est dans EL aussi disponibles comme suit:

#{view.viewId}

Exactement cette valeur est réutilisables dans la navigation de cas à des résultats tels que <h:link outcome> et <h:button outcome>.


Alternativement, vous pouvez également utiliser HttpServletRequest#getRequestURI() d'obtenir ce que l'utilisateur est en train de voir, dans la barre d'adresse du navigateur.

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

Qui est dans EL aussi disponibles comme suit:

#{request.requestURI}

Exactement cette valeur est réutilisables, en <h:outputLink value> ou de la plaine <a href>. Notez que vous ne pouvez pas l'utiliser comme la navigation de cas résultat.

13voto

ifischer Points 4726

Ok, j'ai compris, c'est

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

3voto

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

-1voto

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X