这个问题在这里已经有了答案:
Difference between JSP EL, JSF EL and Unified EL [closed]
(2 个回答)
5年前关闭。
前段时间我读过关于“Core JSF”的区别,但现在我找不到那个地方。
尽管如此,我不记得有关于我们应该在 jsf 中使用 ${expr} 的情况的词。所以我只是好奇有什么区别(在栗子中)以及是否有在 JSF 应用程序中使用 ${expr} 的情况?
最佳答案
用清晰的语言总结:${expression}
只有获取 , 而 #{expression}
两者都可以获取 和 集 .这是因为 ${expression}
仅评估一次(立即),而 #{expression}
对每次访问进行评估(延迟)。
在 JSP 2.0 或 Facelets 1.x 上的 JSF 中,当您将这样的内容作为页面的第一个表达式时
${bean.property}
哪里
bean
是一个请求范围的托管 bean,你什么也看不到。但如果 bean
是 session 范围的托管 bean 并且之前已经创建,然后您将看到正在打印的属性值。如果请求范围的托管 bean 之前由 #{bean.xxx}
创建,这也适用。在同一页面中。如果您改为作为页面的第一个表达式
#{bean.property}
然后 EL 将测试是否
bean
为空,如果是,则为 集 (创建)一个新的。如果在 bean 构造期间设置了属性,那么您将看到此表达式显示的属性。这一切都是强制性的 JSF
UIInput
组件,例如 <h:inputText>
上类。当您提交表单时,#{expression}
将 集 bean 中的值。
关于jsf - jsf中#{expr}和${expr}有什么区别?是否有我们应该更喜欢 ${expr} 的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1847751/