JSF2: Использование EL в правилах навигации. Перенаправление по таймауту? - PullRequest
1 голос
/ 14 мая 2010

Мне интересно следующее:

Когда запрос поступает в сервлет JSF, можно ли перенаправить на страницу тайм-аута сеанса, если сессионный компонент указывает, что сеанс не был зарегистрирован?

Например:

<navigation-rule>
    <from-view-id>*</from-view-id>
    <navigation-case>
        <if>#{not userBean.loggedIn}</if>
        <to-view-id>/login.jsf</to-view-id>
        <redirect/>
    </navigation-case>
</navigation-rule>

Очевидно, что из этого правила нужно исключить login.jsf ... но вы понимаете, в чем дело. Я пробовал что-то похожее, и, похоже, оно не работает, и даже если бы оно имело место, как бы оно справилось с закладками URL-адресов?

Как лучше всего реализовать это в JSF2? Кроме того, есть ли что-то вроде global.asax из ASP.NET в JSF2 или PhaseListeners / Filters об этом?

Спасибо.

1 Ответ

1 голос
/ 15 мая 2010

Правила навигации не будут подходящим местом для такого рода функций, так как NavigationHandler не вызывается до тех пор, пока в конце жизненного цикла (приложение Invoke).

альтернативный текст http://www.ibm.com/developerworks/library/j-jsf2/basic-lifecycle.gif


Вы можете использовать декларативную безопасность (в файле web.xml) для перенаправления на страницу входа. Кроме того, вы можете перенаправить, используя Filter , если вы хотите более точный контроль над тем, что происходит.

...