jsf - 读取 bean 属性的立即与延迟评估

标签 jsf el managed-bean

JSF的使用我还不清楚immediate evaluation对比 deferred evaluation ,主要是因为网上的例子几乎从来没有使用过前一种方法。

我看过相当多的 JSF 示例,包括 http://docs.oracle.com/javaee/6/tutorial/doc/ 中包含的示例。 ,我有点困惑,因为我几乎只看到过 #{} 的例子。而不是 ${} ,即使我们所做的只是读取 bean 属性。

从我对这两种用途的理解,${}只能用来读取bean的属性,不能用来写。我还没有找到明确的解释 immediate 的确切差异。对比 deferred关于 JSF 生命周期的评估以及读取 bean 属性的差异。

如果大家总是用#{}对于读取 bean 属性,您何时建议使用 ${} ?

所以,总结一下:

  • 为什么大家似乎更喜欢#{}${}读取 bean 属性时?
  • 你什么时候推荐使用 ${}而不是 #{} ?
  • 你能举个例子说明在哪里使用 ${}与使用 #{} 会有不同的结果(你能解释为什么结果不同吗)?
  • 最佳答案

    在 Facelets 中,${}被视为 #{} ,所以在技术上没有区别,它总是被推迟。
    在 JSP 2.0 及更早版本中,${}当它不在范围内时不会自动创建托管 bean。因此,只有在您能保证 #{} 时才能使用它。之前在组件树中的某处使用了相同的托管 bean 并且还使用了 view build time vs view render time生命周期考虑在内。在所有 JSP 版本中,${}无法在模型中设置 JSF 输入组件的提交值。总而言之,混合它们可能会让初学者感到困惑,从长远来看,甚至对你自己来说也是如此,因此不推荐。
    也可以看看:

  • Difference between JSP EL, JSF EL and Unified EL
  • 关于jsf - 读取 bean 属性的立即与延迟评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15526536/

    相关文章:

    jsf:绑定(bind)到 UI 中输入文本的整数属性在提交时设置为零

    java - 密码检查成功后加载新网页

    primefaces - 如何将 JSF 复合组件属性设置为 ManagedBean 属性?

    jsf-2 - 通过 FacesContext 传递请求参数

    jsf - 如何重新渲染多个组件

    java - 对 Facelets 页面中的某些元素使用相同的消息

    maven - 指定的 XML 文件没有任何关联的样式表

    java - 尝试嵌套 JSF 表达式字符串

    jsp - 如何评估 EL 中的 scriptlet 变量?

    java - 应该同步哪些代码块?