2015-01-08 4 views
0

У меня есть требование, когда нам нужно перенаправить на страницу для JAF 1.2 Ajax-вызова. В нашем случае нам нужно перенаправить на страницу с истекшим сроком сессии, когда вызов ajax будет запущен после окончания срока действия сеанса. Мы выполняем проверку истечения срока действия сеанса в фильтре, и вызов httpservletresponse.sendRedirect перенаправляется правильно на страницу с истекшим сроком действия, как и ожидалось, но URL-адрес не изменяется, что является проблемой сейчас.JSF 1.2 AJAX Перенаправление на URL

Любые подсказки/душа на стороне клиента/сервера высоко оценены.

~ Ragesh

ответ

0

Наконец мне удалось найти решение указанной проблемы.

В фильтре я устанавливаю заголовок ответа «Location» и другой настраиваемый заголовок, который я буду использовать на стороне клиента для фильтрации ответа.

код фильтра:

httpServletResponse.setStatus(HttpServletResponse.SC_OK); 
httpServletResponse.setHeader("x-timeout-status", "true"); 
httpServletResponse.setHeader("Location", httpServletResponse 
          .encodeRedirectURL(sessionexpiryurl)); 

RichFaces получил файл JavaScript с различными обратными вызовами, необходимых во время вызова вызова AJAX, который запакован в библиотеках RichFaces. Существует одна функция обратного вызова, называемая «processResponse», которая будет вызываться при получении ответа на все вызовы AJAX, инициированные компонентами JSF Ajax. Я использовал это для обработки функций перенаправления.

код JS:

var originalAjaxProcessResponse = A4J.AJAX.processResponse; 

A4J.AJAX.processResponse = function(req) { 
    if (req.getResponseHeader('x-timeout-Status') != undefined && req.getResponseHeader('x-timeout-status') == 'true') { 
     window.location.href = req.getResponseHeader('Location'); 
    } else { 
     originalAjaxProcessResponse(req); 
    } 
} 

Здесь мы переопределение метода для обработки нашего конкретного случая и передать остальную часть Аякса вызова ответа обработки на обработку встроенных предоставленной RichFaces.

Пожалуйста, дайте мне знать, если вы видите какие-либо ограничения для этого решения или есть лучшее решение этой проблемы

~ Ragesh

Смежные вопросы