【发布时间】:2013-07-10 15:47:59
【问题描述】:
我都见过也用过,但一直想知道这两种表达方式有什么区别
${foo.bar()}
和
#{foo.bar()}
在juel中。
有什么线索吗?很难用谷歌搜索 "$" 和 "#" ....
【问题讨论】:
标签: java jakarta-ee el
我都见过也用过,但一直想知道这两种表达方式有什么区别
${foo.bar()}
和
#{foo.bar()}
在juel中。
有什么线索吗?很难用谷歌搜索 "$" 和 "#" ....
【问题讨论】:
标签: java jakarta-ee el
在功能上,${} 只能进行一次获取,而#{} 可以进行一次获取和一组值。
更多信息请参考Difference between JSP EL, JSF EL and Unified EL。
所有使用 ${} 语法的表达式都会被立即计算。这些表达式只能在模板文本中使用,或者作为可以接受运行时表达式的 JSP 标记属性的值。 [...] 立即评估表达式始终是只读值表达式。上面显示的表达式只能从 cart bean 中得到总价;它不能设置总价。
延迟评估表达式采用 #{expr} 的形式,并且可以在页面生命周期的其他阶段进行评估,具体取决于使用该表达式的任何技术。对于 JavaServer Faces 技术,其控制器可以根据表达式在页面中的使用方式在生命周期的不同阶段评估表达式。
另请参阅此SO answer。
【讨论】: