2012-03-07 3 views

ответ

4

Я хочу, чтобы PhaseListener был первым, а затем всеми фильтрами.

Это невозможно. Фазовые слушатели должны выполняться сервлетом лиц JSF. Однако по спецификации фильтры вызывают до любого из сервлетов. Вам нужно будет пересмотреть свой подход. По-видимому, фазовым слушателем фактически должен быть фильтр. Это вполне возможно, если вы не зависите от контекста лиц. Затем отображение фильтра можно просто разместить перед всеми другими фильтрами в web.xml.

+0

Странно. Мы используем Wildfly 9.0.2, а PhaseListeners вызываются перед нашими фильтрами. –

+0

@Olivier: это, вероятно, неверное истолкование (например, задание другого запроса или фильтра выполняется после вызова chain.doFilter()) – BalusC

+0

Вы правы, это было неверное истолкование из-за того, что PhaseListeners вызывались перед отображением страницы входа, а Filters вообще не назывались. Теперь я не знаю, почему фильтры не вызывают перед отображением страницы входа. EDIT: Я нашел, почему здесь: http://stackoverflow.com/questions/7793737/jsf-form-login-page-redirect-hits-before-my-filter;) –

0

Если шаблоны совпадают, порядок обработки определяется порядком сопоставлений фильтра в дескрипторе (web.xml).

Итак, если вы хотите, чтобы X был первым, перечислите его первым.

+0

Я хочу, чтобы мой фазовый прослушиватель был первым, после этого я не измеряю – Ofer

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