web-dev-qa-db-fra.com

Obtenir la page actuelle par programme

Dans un bean de sauvegarde JSF (Bean managé, Weld Bean, peu importe), je peux obtenir le chemin de contexte sur lequel se trouve le client en appelant

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

Cela me donne le chemin d'accès auquel le client accède actuellement, comme /myapplication. Est-il également possible d'obtenir le courant page, comme /home.faces, et comment?

61
Ingo Fischer

Vous souhaitez normalement utiliser UIViewRoot#getViewId() pour cela.

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

C'est en EL également disponible comme suit:

#{view.viewId}

Exactement, cette valeur est réutilisable dans les résultats de cas de navigation tels que <h:link outcome> Et <h:button outcome>.


Alternativement, vous pouvez également utiliser HttpServletRequest#getRequestURI() pour obtenir tout ce que l'utilisateur final voit réellement dans la barre d'adresse du navigateur.

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

Qui est en EL également disponible comme suit:

#{request.requestURI}

Exactement, cette valeur est réutilisable dans <h:outputLink value> Ou simple <a href>. Notez que vous ne pouvez pas l'utiliser comme résultat de cas de navigation.

113
BalusC

Ok, j'ai compris

FacesContext ctx = FacesContext.getCurrentInstance();
HttpServletRequest servletRequest = (HttpServletRequest) ctx.getExternalContext().getRequest();
// returns something like "/myapplication/home.faces"
String fullURI = servletRequest.getRequestURI();
13
Ingo Fischer
String uri = ((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getRequestURI();
3
Catfish