首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >f:events的jsf执行顺序

f:events的jsf执行顺序
EN

Stack Overflow用户
提问于 2012-12-22 08:59:40
回答 1查看 35.1K关注 0票数 21

它们的执行顺序是什么?

下面是一个关于可能的f:event事件名称的问题:List of JSF 2 events?

代码语言:javascript
运行
复制
preRenderComponent
preRenderView
postAddToView
preValidate
postValidate

我想检查用户是否保存在会话bean中,如果没有,则重定向到登录站点,这需要在view-param转换阶段之前进行,因为所使用的转换器取决于登录的用户。“preValidate”似乎发生在转换之后,所以我需要一个更早的事件。

代码语言:javascript
运行
复制
<f:event type="preRenderView" listener="#{beanA.checkLoggedIn()}"/>
<f:viewParam name="param" value="#{beanB.param}" converter="#{beanB.converter}" required="true"/>

我也可以将'checkLoggedIn()‘放在'beanB’中,但是我尝试使用一个单独的请求作用域bean进行检查,这样我就可以很容易地重用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-22 23:57:11

它们的执行顺序是什么?

在视图构建时间(通常在恢复视图阶段,但也可以在呈现响应阶段,例如,navigation).

  • preValidate恰好在要验证组件之前(通常在验证阶段,但如果immediate="true").

  • postValidate在组件被验证之后立即运行,但是,如果immediate="true").

  • preRenderView在呈现响应期间恰好在呈现视图之前运行,则也可以是应用请求值阶段。phase.

单击链接查看javadoc简介中的详细说明。

我想检查用户是否保存在会话bean中,如果没有,则重定向到登录站点,这需要在视图参数转换阶段之前发生,因为使用的转换器取决于登录的用户。“preValidate”似乎发生在转换之后,所以我需要一个更早的事件。

为此,您应该使用简单的servlet filter,而不是JSF事件。我之前已经发布了几个示例:

票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13999099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档