我了解,根据JEE6 tutorial,这不起作用。

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


和托管豆

@ManagedBean
public class Bean {

    private String name;

    public String getName() {
        return name;
    }

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


但是它可以正常工作,我可以从响应页面读取'name'属性。我认为它仅适用于可写属性的延迟评估#{expr}。

最佳答案

根据JEE6教程:


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


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


  可以在何处使用值表达式:使用
  $ {}分隔符可用于:
  
  
  静态文字
  可以接受表达式的任何标准或自定义标签属性
  


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

关于java - 为什么我可以使用具有可写属性的立即评估$ {bean.property}?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13832340/

10-11 14:20
查看更多