Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отработка sendRedirect (primefaces), не происходит никаких действий 
:(
    Опции темы
madjaheda
Дата 28.12.2015, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 13.3.2010

Репутация: нет
Всего: нет



Всем доброго времени суток. Столкнулся с непонятным поведением кода. Речь идет о фильтрах в primefaces. Дело в том что просмотрев много разной информации в просторах интернета решил выполнить задачу именно с помощью них. Нужно просто отловить закрытие сессии и сделать редирект на определенную страницу. Вот мой класс-фильтр
Код

public class SessionTimeoutFilter implements Filter{
    private boolean firstCheck = true;
    //private String timeoutPage = "timeout.xhtml";
    private String timeoutPage = "https://www.google.com.ua";
 
     public void init(FilterConfig filterConfig) throws ServletException {
     }
 
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain filterChain) throws IOException, ServletException {
 
        if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {
            HttpServletRequest httpServletRequest = (HttpServletRequest) request;
            HttpServletResponse httpServletResponse = (HttpServletResponse) response;
             if (isSessionControlRequiredForThisResource(httpServletRequest)) {
                if (isSessionInvalid(httpServletRequest)) {
                    httpServletResponse.sendRedirect("/timeout.xhtml");                 
                    firstCheck = true;
                    return;
                }
            }
        }
        filterChain.doFilter(request, response);
    }
 
     private boolean isSessionControlRequiredForThisResource(HttpServletRequest httpServletRequest) {
      String requestPath = httpServletRequest.getRequestURI();
      boolean controlRequired = !requestPath.contains(getTimeoutPage());
      return controlRequired;
     }
 
     private boolean isSessionInvalid(HttpServletRequest httpServletRequest) {
      boolean sessionInvalid = (httpServletRequest.getRequestedSessionId() != null)
                && !httpServletRequest.isRequestedSessionIdValid();
      
      if(firstCheck)
          if(httpServletRequest.getSession().isNew()){
              sessionInvalid = false;
              firstCheck = false;
          }
              return sessionInvalid;
     }
 
     public void destroy() {
     }
 
     public String getTimeoutPage() {
      return timeoutPage;
     }
 
     public void setTimeoutPage(String timeoutPage) {
      this.timeoutPage = timeoutPage;
     }
     
    }

И дело в том, что именно когда нужные условия выполняются и должен происходить редирект, то метод как таковой вызывается (видно через дебаггер), а по сути редирект не происходит. Эксперимента ради вызывал метод sendRedirect до проверок и все работало. Фильтр ловил реквест и сходу же направлял меня на нужную страницу.
Видать дело в том что когда сессия истекает, то и редирект не срабатывает. На форумах пишут что должно работать, а по факту нет =( Подскажите, пожалуйста, в чем может быть проблема. Вот на всякий случай как я указал фильтр в xml
Код

<filter>
        <filter-name>SessionTimeoutFilter</filter-name>
        <filter-class>ua.obriy.controller.general.SessionTimeoutFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>SessionTimeoutFilter</filter-name>
        <url-pattern>*.xhtml</url-pattern>
    </filter-mapping>

Заранее благодарен.

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0385 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.