我前一段时间读过有关“Core JSF”的差异的内容,但现在我找不到那个地方。
不过,我不记得有一句话提到我们应该在 jsf 中使用 ${expr} 的情况。所以我只是好奇有什么区别(举个栗子)以及是否有在 JSF 应用程序中使用 ${expr} 的情况?
用清晰的语言总结一下:${expression}
只做get, while #{expression}
可以两者兼得get and set。这是因为${expression}
仅评估一次(立即),而#{expression}
每次访问时都会进行评估(延迟)。
在 JSP 2.0 或 Facelets 1.x 上的 JSF 中,当您将类似这样的内容作为页面的第一个表达式时
${bean.property}
where bean
是一个请求范围的托管 bean,您将看到nothing。但如果bean
是一个会话范围的托管 bean 并且之前已经创建过,那么您将看到正在打印的属性值。如果请求范围的托管 Bean 是之前创建的,则这也适用#{bean.xxx}
在同一页面中。
如果您改为作为页面的第一个表达式
#{bean.property}
那么 EL 将测试是否bean
为空,如果是,那么它将set(创建)一个新的。如果该属性是在 bean 构造期间设置的,那么您将看到该表达式显示该属性。
这一切对于获取 JSF 都是强制性的UIInput http://java.sun.com/javaee/5/docs/api/javax/faces/component/UIInput.html组件如<h:inputText> http://java.sun.com/javaee/javaserverfaces/1.2_MR1/docs/tlddocs/h/inputText.html上班。当您提交表格时,#{expression}
will setbean 中的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)