那些的执行顺序是什么?
以下是有关可能的f:event
个活动名称的问题:List of JSF 2 events?
preRenderComponent
preRenderView
postAddToView
preValidate
postValidate
我想检查用户是否已保存在会话bean中,如果没有重定向到登录站点,则需要在view-param转换阶段之前进行,因为使用的转换器依赖于登录的用户。 'preValidate'似乎是在转换后发生的,因此我需要更早的事件。
<f:event type="preRenderView" listener="#{beanA.checkLoggedIn()}"/>
<f:viewParam name="param" value="#{beanB.param}" converter="#{beanB.converter}" required="true"/>
我本可以在'beanB'中加入'checkLoggedIn()',但是试图使用一个单独的请求范围的bean来进行检查,以便我可以轻松地重用它。
答案 0 :(得分:29)
那些的执行顺序是什么?
postAddToView
会立即运行。preValidate
在要验证组件之前运行(通常在验证阶段,但如果immediate="true"
,也可以应用请求值阶段。)postValidate
在验证组件后立即运行(通常在验证阶段,但如果immediate="true"
,也可以应用请求值阶段。)preRenderView
在呈现响应阶段呈现视图之前运行。preRenderComponent
在呈现响应阶段呈现组件之前运行。单击链接以查看javadoc简介中的详细说明。
我想检查用户是否保存在会话bean中,如果没有重定向到登录站点,这需要在view-param转换阶段之前发生,因为使用的转换器取决于登录用户。 'preValidate'似乎是在转换后发生的,因此我需要更早的事件。
您应该使用简单的servlet filter,而不是JSF事件。我之前发过几个例子: