在 Java 统一表达式语言中有两种基本类型的 EL 语法:
${expression for immediate evaluation}
#{expression for deferred evaluation}
我在 JaveServer Faces 中理解这两者之间的区别:JSF 有一种变化的生命周期的感觉,即时表达式总是在页面渲染时评估,而延迟表达式可以在页面渲染、回发或两者兼而有之时评估。
但是,对于 JavaServer Pages,我并不清楚区别。据我所知,JSP 没有 JSF 所具有的生命周期意识。事实上,当得知延迟语法在 JSP 中甚至是合法的时,我有些惊讶。但是,我现在知道确实如此,因为<jsp-config>
部署描述符中提供了向后兼容性设置,以禁用对将该语法用于其他目的的 pre-JUEL JSP 的延迟语法检测:
<deferred-syntax-allowed-as-literal>
所以,问题是,有什么区别?延迟语法在 JSP 中的含义显然与在 JSF 中的含义不完全相同,但是我在任何地方都找不到任何描述如何为 JSP 使用延迟语法的文档。
它们只是 JSP 中的同义词吗?