$ {}和#{}之间有什么区别

时间:2013-07-10 15:47:59

标签: java java-ee el

我已经看过并使用了两者,但总是想知道两个表达式之间有什么区别

${foo.bar()}

#{foo.bar()}

在juel。

任何线索?很难谷歌“$”和“#”......

1 个答案:

答案 0 :(得分:4)

从功能上讲,${}只能执行get,而#{}可以执行get和一组值。

请参阅Difference between JSP EL, JSF EL and Unified EL了解更多信息。

阅读JavaEE tutorial

  

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

     

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

另请参阅此SO answer