JSF 何时评估 EL 表达式
Posted
技术标签:
【中文标题】JSF 何时评估 EL 表达式【英文标题】:When does JSF evaluate EL expressions 【发布时间】:2014-06-21 06:39:06 【问题描述】:对于延迟的 EL 表达式,JSF 将在单个请求期间对其进行多次评估。我查看了 JavaEE 教程,上面写着:
对于回发请求,JavaServer Faces 实现评估 生命周期不同阶段的表达式,在此期间 从请求中检索、验证并传播到 客户 bean。
这是否意味着 JSF 将在单个请求中评估 EL 表达式 3 次?这可能是一个潜在的性能问题。
例如,我们可以使用#userList.resultList
表达式检索实体集合。 JSF 评估它 3 次,也就是说,数据库将在一个请求中被查询 3 次。如何避免这种冗余的数据库查询?
谢谢!
【问题讨论】:
它更像是 6 而不是 3。您可以通过只在渲染响应阶段进行数据库查找等主要工作来避免它。 【参考方案1】:EL 应该使用简单的 getter/setter。不要将业务逻辑放在你的 getter 中,因此 userList.resultList 应该简单地 - 返回在初始化时设置到 bean 中的 resultList。
参考:Why JSF calls getters multiple times
我可以剪切和粘贴并继续讨论这个问题,但是 BalusC 在上面的帖子中解释得非常好
【讨论】:
太棒了,这正是我需要的。谢谢!以上是关于JSF 何时评估 EL 表达式的主要内容,如果未能解决你的问题,请参考以下文章
结合接缝 3 和 JSF2 复合组件 valueChangeListener 评估 El 表达式的问题