Использование чистого JSF для получения страницы вызова - PullRequest
3 голосов
/ 08 сентября 2011

JSF 1.2-1.2_07-b03-FCS

JSTL 1_1-mr2 (специальная сборка)

Java 1.6.0_22-b04

Затмение 3.6.0 (Гелиос)

Tomcat 6.0.28 (необходимо также запустить на Weblogic)

IE 7.0.5730.13

Firefox: 6,0

У нас есть страница: http://{host:port}/mybase/faces/mypage.jsp...

Он вызывается с нескольких внешних страниц с помощью гиперссылки, перенаправления и т. Д.

Мы хотели бы определить URL-адрес страницы, на которой она была вызвана (для реализации кнопки «назад» для командной кнопки), в чистом виде «JSF».

Мы знаем, что можем сделать это:

    FacesContext facesContext = FacesContext.getCurrentInstance();
    ExternalContext externalContext = facesContext.getExternalContext();        
    HttpServletRequest origRequest = 
        (HttpServletRequest)externalContext.getRequest();
    String referrer = origRequest.getHeader("referer"); 

Однако для этого требуется запрос HttpServletRequest, который требует включения файла servlet-api.jar.

Вопрос: можно ли это сделать в чистом виде JSF и, таким образом, без включения файла servlet-api.jar?

Спасибо, John

1 Ответ

5 голосов
/ 08 сентября 2011

Для этого, однако, требуется запрос HttpServletRequest, который требует включения файла servlet-api.jar

Это не имеет смысла.У JSF уже есть зависимость от Servlet API.Возможно, вы имеете в виду ошибку компиляции в вашей IDE, потому что проект вообще не связан с целевой средой выполнения?В таком случае, пожалуйста, внимательно прочтите это: Как мне импортировать API javax.servlet в мой проект Eclipse?

Что касается конкретного вопроса, просто используйте ExternalContext#getRequestHeaderMap(), чтобы получить отображение заголовков запроса.

String referrer = externalContext.getRequestHeaderMap().get("referer"); 
// ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...