何时评估ui:fragment呈现属性

时间:2013-09-20 04:10:15

标签: jsf jsf-2

是否在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>

1 个答案:

答案 0 :(得分:3)

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

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

另见: