JSF2:在导航规则中使用EL。超时重定向?

时间:2010-05-14 19:03:04

标签: java navigation el session-timeout jsf-2

我想知道以下内容:

当请求进入JSF servlet时,如果会话bean指示会话尚未登录,是否可以重定向到会话超时页面?

例如:

<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 ......但是你明白了。我尝试了类似的东西,它似乎不起作用,即使它确实如此,它将如何处理Bookmarked URLS?

如何在JSF2中实现此功能?此外,是否有类似于JSF2中的ASP.NET的global.asax,或者是关于它的PhaseListeners / Filters?

谢谢。

1 个答案:

答案 0 :(得分:1)

导航规则不适合这种功能,因为NavigationHandler直到生命周期的很晚才被调用(Invoke Application)。

alt text http://www.ibm.com/developerworks/library/j-jsf2/basic-lifecycle.gif


您可以使用declarative security(在web.xml中)重定向到登录页面。或者,如果您希望更精细地控制发生的情况,可以使用Filter重定向。