【发布时间】:2009-08-21 11:28:48
【问题描述】:
我可以通过使用表达式语言 (EL) 在 .jsp 文件中使用来自我的 Java Bean 的对象。因此我可以通过输入 ${foo.bar} 来获得我的价值。但我也可以使用#{foo.bar}。
任何人都可以解释差异或提供有意义信息的链接吗?
【问题讨论】:
我可以通过使用表达式语言 (EL) 在 .jsp 文件中使用来自我的 Java Bean 的对象。因此我可以通过输入 ${foo.bar} 来获得我的价值。但我也可以使用#{foo.bar}。
任何人都可以解释差异或提供有意义信息的链接吗?
【问题讨论】:
JSP 2.1 spec 对此进行了介绍。
在 Java EE 中,#{expr} 用于延迟评估,${expr} 用于立即评估。延迟表达式 (#{expr}) 表达式只能与接受它们的标记属性一起使用。这是一个 Java EE 约定,但其他域可以强加自己的含义(例如,如果你想use EL in your own templates)。
【讨论】:
#{foo.bar} 语法来自 JSF 表达式语言。一些聪明的火花认为使用与 JSP EL 不同的语法是个好主意(即${foo.bar})。我认为一些 JSP 容器可以容忍这种错误,并允许您使用任何一个。
【讨论】: