Кнопки ajax JSF 2 не вызывают сервер после тайм-аута сеанса


Мое приложение аутентифицируется с помощью RSA authentication manager

Как только пользователь вошел в систему, его зарегистрированный идентификатор пользователя извлекается из заголовка запроса, роль определяется из поиска LDAP. затем эта роль используется приложением JSF2 для отображения определенных разделов страницы и других областей, зависящих от авторизации.

(Примечание: вместо RSA можно использовать и Tivoli).

Время ожидания приложения контролируется web.XML session-значение таймаута, которое равно в настоящее время установлено на 30 минут. И время ожидания RSA было установлено на 2 минуты (для тестирования). Когда сеанс RSA истекает до сеанса приложения,и пользователь выполняет любую серверную операцию, такую как нажатие кнопки, пользователь автоматически перенаправляется обратно на страницу входа в систему RSA. Это было работает нормально.

После того, как я добавил функциональность ajax к некоторым кнопкам в приложении, используя следующий тег F: ajax

Теперь, когда сеанс RSA истекает, и я нажимаю на такую кнопку, вызов сервера не производится кнопкой, он скорее показывает всплывающее окно javascript, говорящее о неправильном XML: документ пуст.

Однако если я нажму кнопку F5 или кнопку обновления браузера, чтобы вызвать вызов сервера, то более раннее поведение переадресации на страницу входа в систему все еще работает. Я должен каким-то образом быть в состоянии сделать вызов сервера из ajaxified кнопок после окончания сеанса RSA.

Любая помощь будет объявлена.

1 4

1 ответ:

Это потому, что представление больше не существует и сервер не может воссоздать представление на сервере для выполнения ajax, вы можете попробовать что-то вроде этого:

var onError = function onError() {
   window.location = 'http://domain.com/loginPage.jsf';
 };
jsf.ajax.addOnError(onError);