我前段时间读过"核心JSF"的不同之处,但现在我找不到那个地方了.
然而,我不记得在jsf中我们应该使用$ {expr}的情况.所以我只是好奇有什么区别(在板栗中)以及是否有在JSF应用程序中使用$ {expr}的情况?
Bal*_*usC 25
总之清晰的语言:${expression}不只是得到,而#{expression}能做到既获得和设置.这是因为${expression}只评估一次(立即),而#{expression}对每次访问(延迟)进行评估.
在JSP 2.0或Facelets 1.x上的JSF中,当你把这样的东西作为页面的第一个表达式
${bean.property}
Run Code Online (Sandbox Code Playgroud)
bean请求作用域托管bean 在哪里,你什么都看不到.但如果bean是一个会话范围的托管bean并且之前已经创建过,那么您将看到正在打印的属性值.如果#{bean.xxx}在同一页面之前创建了请求范围的托管bean,则这也适用.
如果您改为作为页面的第一个表达式
#{bean.property}
Run Code Online (Sandbox Code Playgroud)
那么EL将测试if是否bean为null,如果是,那么它将设置(创建)一个新的.如果在bean构造期间设置了属性,那么您将看到此表达式显示的属性.
这一切都是强制性的,以获得其他JSF UIInput组件,如<h:inputText>工作.提交表单时,#{expression}将在bean中设置值.
| 归档时间: |
|
| 查看次数: |
5353 次 |
| 最近记录: |