【问题标题】:When is the ui:fragment rendered attribute evaluated何时评估 ui:fragment 渲染属性
【发布时间】:2013-09-20 04:10:14
【问题描述】:

是否在 JSF 生命周期的每个阶段评估 ui:fragment 的渲染属性。我确信它会在 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>

【问题讨论】:

    标签: jsf jsf-2


    【解决方案1】:

    这取决于孩子。如果有UIInput 孩子,那么它也会在应用请求值、验证和更新模型值阶段进行评估。如果有UICommand 孩子,那么它也会在应用请求值和调用应用程序阶段进行评估。这一切都是防止伪造请求的一部分,其中最终用户(阅读:黑客)试图操纵提交数据的处理方式。

    至于具体问题,只是不要在getter方法中做业务逻辑。 Getter 方法不应与数据库交互。他们不在那里。正如他们的名字所说,Getter 方法应该只返回已经准备好的数据。您需要在 bean 的构造函数或 @PostConstruct 方法中执行业务逻辑,并将其分配给属性。 getter 方法应该只返回该属性。那么它被调用的频率绝对无关紧要。

    另见:

    【讨论】:

    • 非常感谢 BalusC。我不知道你是怎么做到的,但你似乎总是知道正确的答案。
    猜你喜欢
    • 2012-01-31
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 2017-09-26
    相关资源
    最近更新 更多