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

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

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

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

这在JSP 2.1规范中有所涉及。

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