让我们有一些1.xhtml
包含的facelet
<h:inputText id="prop" value="#{MyBean.myProperty}"/>
Run Code Online (Sandbox Code Playgroud)
和2.xhtml
包含的facelet
<h:inputText id="prop" value="${MyBean.myProperty}"/>
Run Code Online (Sandbox Code Playgroud)
从官方教程引用:
Immediate evaluation means that the expression is evaluated and the result returned as soon as the page is first rendered.
Run Code Online (Sandbox Code Playgroud)
我不明白立即表达的具体阶段是什么?在Render Response
阶段或Update model values
或Apply request
或什么?
本教程讨论的是遗留JSP.在JSP上使用JSF ${}
时,无论在何处声明,都始终在视图构建期间对其进行评估.就像JSTL,taghandlers和id
/ binding
attributes在JSF中的工作方式一样.另请参阅JSF2 Facelets中的JSTL ......有意义吗?对于一些深入的解释.
然而,在JSP的后继Facelets中,${}
处理方式完全相同#{}
.所以${}
评估也是推迟的.为了避免您自己和Facelets代码的未来维护者之间的混淆,强烈建议放弃使用${}
Facelets并#{}
始终坚持使用.
每次在运行时期间需要其结果时,都会计算延迟表达式.对于UIInput
组件,在验证阶段(检查提交的值是否与(old!)模型值相比,在触发所有值更改侦听器之前是否已更改)和渲染响应期间的一次(用于生成HTML输出)新!)模型值).如果立即对其进行评估,则设置和获取新模型值将不起作用.
归档时间: |
|
查看次数: |
573 次 |
最近记录: |