Наконец мне удалось найти решение указанной проблемы.
В фильтре я устанавливаю заголовок ответа «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