【问题标题】:Why I can use immediate evaluation ${bean.property} with writable property?为什么我可以将立即评估 ${bean.property} 与可写属性一起使用?
【发布时间】:2012-11-29 17:15:42
【问题描述】:

我知道根据JEE6 tutorial 不应该工作。

<h:inputText value="${bean.name}/>

和托管 bean

@ManagedBean
public class Bean {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

但它工作得很好,我可以从响应页面中读取“名称”属性。我认为它只适用于可写属性的延迟评估#{expr}。

【问题讨论】:

  • 您完全将“阅读”与“写作”混为一谈。添加提交按钮并按下它。 ${} 是否更新(写入)模型值?这就是你的答案。

标签: java jsf-2 glassfish el mojarra


【解决方案1】:

根据JEE6教程:

  • 右值表达式可以读取数据但不能写入数据。
  • 所有立即计算的表达式都使用 ${} 分隔符并且始终是右值表达式

所以这可能会导致您认为您不能在可写属性中使用${},但如果您稍后阅读:

可以使用值表达式的地方:使用 ${} 分隔符可用于:

  • 静态文本
  • 可以接受表达式的任何标准或自定义标记属性

所以,如果我没记错的话,这与前者并不矛盾。这只是意味着当你使用&lt;h:inputText value="${bean.name}"/&gt;时,它将被用于读取name属性,但是如果你修改inputText中的内容,它不会写入

【讨论】:

    猜你喜欢
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    相关资源
    最近更新 更多