gpt4 book ai didi

jsf - 立即和延迟评估 EL

转载 作者:行者123 更新时间:2023-12-05 00:27:46 25 4
gpt4 key购买 nike

让我们有一些facelet 1.xhtml包含

<h:inputText id="prop" value="#{MyBean.myProperty}"/>

和面片 2.xhtml包含
<h:inputText id="prop" value="${MyBean.myProperty}"/>

引用官方教程:
Immediate evaluation means that the expression is evaluated and the result returned as soon as the page is first rendered. 

我不明白在什么特定阶段立即表达式被评估?在 Render Response相或 Update model valuesApply request或者是什么?

最佳答案

本教程讨论的是遗留 JSP。在 JSP 上使用 JSF 时,${}无论在何处声明,始终在 View 构建期间进行评估。就像 JSTL、taghandlers 和 id 一样/binding属性在 JSF 中工作。另见 JSTL in JSF2 Facelets... makes sense?对于一些深入的解释。
然而,在 JSP 的继任者 Facelets 中,${}处理方式与 #{} 完全相同.所以${}评估也被推迟。为避免您自己和您的 Facelets 代码的 future 维护者之间产生混淆,强烈建议您放弃使用 ${}。在 Facelets 中并坚持 #{}每时每刻。
对延迟表达式求值 每次在运行时需要其结果时。如果是 UIInput组件,那是在验证阶段的一次(在触发所有值更改监听器之前检查提交的值与(旧!)模型值相比是否发生了变化)和渲染响应期间的一次(使用(新!)生成 HTML 输出)模型值)。如果立即对其进行评估,则设置和获取新模型值将不起作用。
也可以看看:

  • Difference between JSP EL, JSF EL and Unified EL
  • Why JSF calls getters multiple times
  • Debug JSF lifecycle
  • 关于jsf - 立即和延迟评估 EL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20039485/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com