我了解,根据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/