对于延迟的EL表达式,JSF将在单个请求期间对其进行多次评估。我已经查看了JavaEE教程,它说:
对于回发请求,JavaServer Faces实现在生命周期的不同阶段评估表达式,在此期间,从请求中检索值,进行验证,并传播到customer。
那么,这是否意味着JSF将在一个请求中计算EL表达式3次?这可能是一个潜在的性能问题。
例如,我们可以使用#{userList.resultList}表达式检索实体集合。JSF对其进行3次评估,也就是说,在一个请求中将访问数据库3次。如何避免这种冗余的数据库查询?
谢谢!
发布于 2014-05-05 04:51:26
EL应该使用简单的getter/setter。不要将业务逻辑放入您的getter中,因此userList.resultList应该简单地将初始化时设置到bean中的-return resultList。
参见:Why JSF calls getters multiple times
我可以剪切粘贴并继续做下去,但是BalusC在上面的文章中解释得特别好。
https://stackoverflow.com/questions/23464380
复制相似问题