我在使用EL 1.0的JSF 1.2中遇到了一些属性绑定问题
public class Bean {
private String name;
public String getName() {
return name;
}
public Bean setName(String name)
this.name = name;
return this;
}
XHTML在表单提交时给出了“属性'名称'不可写”错误:
..
<h:inputText value="#{bean.name}" />
..
为什么呢?它是第三方库,有解决这种情况的解决方法吗?
答案 0 :(得分:0)
更改setName
方法的签名
public void setName(String name)
this.name = name;
}
如果你想在你的Bean类中使用第二个构造函数,那么它应该像这样设计
public Bean (String name)
this.name = name;
}
答案 1 :(得分:0)
我找到了针对该案例的解决方法,但显然这不是最优雅的方式:
创建Bean类的“伪扩展”:
public class BeanExtension {
private Bean instance = new Bean();
public String getName() {
return instance.getName();
}
public void setName(String name)
instance.setName(name);
}
// omitted instance getter and setter methods
}
由于我想覆盖setName方法返回“void”,现在我必须使用bean.instance
来访问它的属性,并bean.name
将JSF上的名称绑定到EL。