它们的执行顺序是什么?
下面是一个关于可能的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"/>
我也可以将'checkLoggedIn()‘放在'beanB’中,但是我尝试使用一个单独的请求作用域bean进行检查,这样我就可以很容易地重用它。
发布于 2012-12-22 23:57:11
它们的执行顺序是什么?
在视图构建时间(通常在恢复视图阶段,但也可以在呈现响应阶段,例如,navigation).
preValidate
恰好在要验证组件之前(通常在验证阶段,但如果immediate="true"
).
postValidate
在组件被验证之后立即运行,但是,如果immediate="true"
).
preRenderView
在呈现响应期间恰好在呈现视图之前运行,则也可以是应用请求值阶段。phase.
preRenderComponent
在呈现响应阶段中呈现组件之前运行。单击链接查看javadoc简介中的详细说明。
我想检查用户是否保存在会话bean中,如果没有,则重定向到登录站点,这需要在视图参数转换阶段之前发生,因为使用的转换器取决于登录的用户。“preValidate”似乎发生在转换之后,所以我需要一个更早的事件。
为此,您应该使用简单的servlet filter,而不是JSF事件。我之前已经发布了几个示例:
https://stackoverflow.com/questions/13999099
复制相似问题