在JSF里开发自定义标签时,ID属性值的设置跟一般的属性不一样:
如果这样设置运行时会报java.lang.IllegalArgumentException异常,这是因为在UIComponent类的setValueExpression方里会 检测Expression的名字是"id"或"parent"时就会抛出java.lang.IllegalArgumentException异常.
正确的方法是:
var属性值的设置方式
if(this.id!=null){
component.setValueExpression("id", this.id);
}
如果这样设置运行时会报java.lang.IllegalArgumentException异常,这是因为在UIComponent类的setValueExpression方里会 检测Expression的名字是"id"或"parent"时就会抛出java.lang.IllegalArgumentException异常.
正确的方法是:
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
if(this.id!=null){
component.setId((String)this.id.getValue(elContext));
}
var属性值的设置方式
if(this.var!=null){
((HtmlDataTable)component).setVar((String)this.var.getValue(elContext));
}