2013-07-10 96 views
4

之间的区别我已经看到,并且使用了,但总是想知道

${foo.bar()} 

#{foo.bar()} 

两个表达式之间的区别是在JUEL 。

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

回答

3

功能上,${}只能做一个get,而#{}可以做一个get和一组值。

有关更多信息,请参阅Difference between JSP EL, JSF EL and Unified EL

阅读JavaEE tutorial

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

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

另请参阅此SO answer

+0

谢谢。我将自己的问题标记为“重复”。 –