4

我都见过并用过,但一直想知道这两种表达方式有什么区别

${foo.bar()}

#{foo.bar()}

在juel。

有什么线索吗?很难用谷歌搜索“$”和“#”......

4

1 回答 1

4

功能上,${}can只做一个get,而#{}can做一个get和一组value。

有关更多信息,请参阅JSP EL、JSF EL 和统一 EL 之间的区别

阅读JavaEE 教程

使用 ${} 语法的所有表达式都会立即求值。这些表达式只能在模板文本中使用,或者作为可以接受运行时表达式的 JSP 标记属性的值。[...] 立即评估表达式始终是只读值表达式。上面显示的表达式只能从 cart bean 中得到总价;它不能设定总价。

延迟评估表达式采用 #{expr} 的形式,并且可以在页面生命周期的其他阶段进行评估,由使用该表达式的任何技术定义。在 JavaServer Faces 技术的情况下,它的控制器可以根据表达式在页面中的使用方式在生命周期的不同阶段评估表达式。

另请参阅此SO 答案

于 2013-07-10T15:56:35.447 回答