“$ {foo.bar}”和“#{foo.bar}”之间的区别是什么?

时间:2009-08-21 11:28:49

标签: java jsp jstl el

我可以使用表达式语言(EL)在.jsp文件中使用Java Bean中的对象。因此,我可以输入$ {foo.bar}来获取我的价值。但我也可以使用#{foo.bar}。

有人可以解释这些差异或提供有意义的信息链接吗?

2 个答案:

答案 0 :(得分:17)

JSP 2.1 spec

中介绍了这一点

在Java EE中,#{expr}用于延迟评估${expr}用于立即评估。延迟表达式(#{expr})表达式只能与接受它们的标记属性一起使用。这是一个Java EE约定,但其他域可以强加其自己的含义(例如,如果您想要use EL in your own templates)。

答案 1 :(得分:6)

#{foo.bar}语法来自JSF表达式语言。一些明亮的火花认为使用与JSP EL不同的语法(即${foo.bar})是个好主意。我认为一些JSP容器可以容忍这个cockup,让你使用其中任何一个。