gpt4 book ai didi

jsf - ui :fragment rendered attribute evaluated是什么时候

转载 作者:行者123 更新时间:2023-12-04 04:40:59 24 4
gpt4 key购买 nike

ui:fragment 的渲染属性是否在 JSF 生命周期的每个阶段进行评估。我确信它在 RENDER_RESPONSE 阶段进行了评估,正如我所期望的那样,但它不是也通过 APPLY_REQUEST_VALUES、PROCESS_VALIDATIONS、UPDATE_MODEL_VALUES 和 INVOKE_APPLICATION 进行评估的。

原因是我们根据数据库中的数据渲染了一些 ui:fragment。这是我们编写的标签。如果数据库中有一些数据,我们只呈现 ui:fragment 的内容,即创作的标签。有什么方法可以避免所有这些调用,并且每个请求-响应生命周期只执行一次。这是它的样子

<ui:fragment rendered="{some values exist in db}">
<ourtags:sometag>
</ui:fragment>

最佳答案

那要看 child 了。如果有UIInput子,然后它也在应用请求值、验证和更新模型值阶段进行评估。如果有UICommand子,然后它也在应用请求值和调用应用程序阶段进行评估。这一切都是防止伪造请求的一部分,其中最终用户(阅读:黑客)试图操纵提交的数据的处理方式。
至于具体的问题,就是不要在getter方法中做业务逻辑。 Getter 方法不应与数据库交互。他们不是为了。正如它们的名字所说,getter 方法应该只返回已经准备好的数据。您需要在 bean 的构造函数或 @PostConstruct 中执行业务逻辑。方法,并将其分配给一个属性。 getter 方法应该只返回该属性。那么它被调用的频率绝对无关紧要。
另见:

  • Why JSF calls getters multiple times
  • Why is the getter called so many times by the rendered attribute?
  • 关于jsf - ui :fragment rendered attribute evaluated是什么时候,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18908665/

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