2012-06-08 7 views
2

Есть ли какой-либо механизм событий в JSF 2 после того, как страница была полностью отображена? Я хочу аннулировать сеанс пользователя после того, как он дойдет до последней страницы моего приложения, и страница полностью отобрана?Обработчик события переноса сообщения в JSF 2?

+0

Почему ждать, пока страница будет отображаться? Вы не можете использовать событие preRenderView? – Damian

+0

Фактически я не могу, так как это приведет к недействительности сеанса, и страница не сможет отобразить содержимое, которое оно должно отображать из базы данных бланка, которая имеет отношение к сеансу. – user1220373

+0

Я не знаю собственного способа JSF, но как насчет добавления скрипта в атрибут body 'onload', который программным образом нажимает скрытую кнопку, которая выполняет метод, который вам нужно запустить? – Damian

ответ

1

Обратите внимание: Link. Возможно, вы можете попробовать недействить сеанс на событии PreRenderComponentEvent (после того, как компонент был визуализирован), хотя имя и описание кажутся непоследовательными.

Если это не поможет, попробуйте использовать обходной путь путем косвенной навигации по целевой странице. Сначала вы переходите к какой-то фиктивной странице JSF, что приведет к аннулированию сеанса (метод postconstruct или прослушиватель системных событий), а затем инициирует перенаправление на вашу целевую страницу JSF. Help for redirection. Если вам нужно это поведение в нескольких местах, вы также можете обобщить промежуточный JSF, передав целевую страницу в качестве параметра.

EDIT: Вы пытались аннулировать сеанс в методе, аннотированном с помощью @PreDestroy внутри компонента RequestScoped? В случае, если он работает: я не уверен, что JSF гарантирует вызов методов predestroy до того, как будет сделан новый запрос.

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