Как мне получить страницу скрипта, которую я запускаю, из URL браузера - PullRequest
1 голос
/ 16 ноября 2011

Есть ли в JSF способ получить URL-адрес, имя сценария из адресной строки, которая ссылается на страницу, на которой я сейчас нахожусь? Что бы это был за путь?

1 Ответ

1 голос
/ 16 ноября 2011

Чтобы получить 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" />

Связанные:

...