gpt4 book ai didi

events - f:events的jsf执行顺序

转载 作者:行者123 更新时间:2023-12-03 13:50:36 25 4
gpt4 key购买 nike

这些的执行顺序是什么?

这是有关可能的f:event事件名称的问题:List of JSF 2 events?

preRenderComponent
preRenderView
postAddToView
preValidate
postValidate

我想检查是否已将用户保存在 session bean中是否登录,以及是否未重定向到登录站点,这需要在 View 参数转换阶段之前进行,因为所使用的转换器取决于登录的用户。 “preValidate”似乎在转换后发生,因此我需要更早的事件。
<f:event type="preRenderView" listener="#{beanA.checkLoggedIn()}"/>
<f:viewParam name="param" value="#{beanB.param}" converter="#{beanB.converter}" required="true"/>

我本来也可以将'checkLoggedIn()'放入'beanB'中,但尝试仅使用单独的请求范围的Bean进行检查,以便我可以轻松地重用它。

最佳答案

What is the execution order of those?


  • postAddToView 在 View 构建期间将组件添加到 View 之后立即运行(通常在还原 View 阶段,但也可以在渲染响应阶段,例如导航)。
  • preValidate 在要验证组件之前运行(通常在验证阶段,但如果是immediate="true",则也可以应用请求值阶段)。
  • postValidate 在组件通过验证后立即运行(通常在验证阶段,但如果是immediate="true",则也可以应用请求值阶段)。
  • preRenderView 在渲染响应阶段中渲染 View 之前运行。
  • preRenderComponent 在渲染响应阶段中渲染组件之前运行。

  • 单击链接以查看javadoc简介中的详细描述。

    I want to check if a User is saved in a session bean is logged in and if not redirect to the login site, which needs to occur before view-param conversion phase since the used converter depends on the logged in User. 'preValidate' seems to take place after conversion and so I need an earlier event.



    为此,您应该使用一个简单的 servlet filter,而不是JSF事件。我之前发布了几个示例:
  • Is there any easy way to preprocess and redirect GET requests?
  • Are there some issue at inserting some check into template?
  • 关于events - f:events的jsf执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13999099/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com