jsf - jsf中#{expr}和${expr}有什么区别?是否有我们应该更喜欢 ${expr} 的情况?

标签 jsf el

这个问题在这里已经有了答案:





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/

相关文章:

java - 我可以使用 EL 从 JSP 访问枚举类的值吗?

css - 为什么 CSS 不在 chrome 中呈现,而是在 Eclipse 中工作?

jsf - 如何从 p :fileUpload as BLOB in MySQL? 插入上传的图像

javascript - 从 java 文件中的函数弹出简单的文本消息警报

java - 如何刷新数据表以从数据库中检索新列表

jsf - 在 JSF2 中呈现表单范围之外的组件

java - Spring表达式语言的具体使用

jboss - EAP 7.3 : java. lang.ClassNotFoundException: # 许可给 Apache 软件基金会 (ASF) 一个或多个 - 仅在独立模式下

javascript - 检查 PrimeFaces widgetVar 是否存在

javascript - Highcharts 和表达式语言问题 - token "{"出现语法错误