Чтобы получить URI запроса в компоненте поддержки, вам нужно получить HttpServletRequest
из-под обложки JSF:
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
// ...
Он предлагает несколько методов для получения информации о запросе, например getRequestURI()
.Большинство из них также доступны через getRequestXXX()
методы ExternalContext
, но URI запроса нет.
В представлении вы можете получить его с помощью #{request}
.Например,
<a href="#{request.requestURI}">Click here to navigate recursively</a>
В качестве альтернативы, если вы на самом деле заинтересованы в идентификаторе представления JSF ("имя сценария", как вы говорите сами), тогда лучше использовать UIViewRoot#getViewId()
:
String viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
// ...
или в самом представлении:
<a href="#{request.contextPath}#{facesContext.viewRoot.viewId}">Click here to navigate recursively</a>
или без контекстного пути:
<h:link outcome="#{facesContext.viewRoot.viewId}" value="Click here to navigate recursively" />
Связанные: