jsf valueChangeListener 表间级联









如上是我的代码 在选择区的时候 可以级联出 服务器. 但是在我选择了 一区 再选择一个服务器 .然后 再选择区的时候会报出:
j_id_jsp_297725092_2:j_id_jsp_297725092_8:验证错误:值无效 (服务器下拉列表 那的id报出的)
但是服务器下拉别表是有值的 而且是正确的.
但是提交表单后 不能成功,服务器下拉列表 那就变成没值了
但是 区 下拉列表 是有值的 必须重新 选择 才会带出服务器下拉列表

区:




/h:selectOneMenu
/h:panelGroup
服务器:




/h:selectOneMenu
/h:panelGroup

问题解决了,使用binding没有这个问题:
服务器改动如下:
[code="java"]
private UISelectItems selectItems;

public UISelectItems getSelectItems() {
    return selectItems;
}

public void setSelectItems(UISelectItems selectItems) {
    this.selectItems = selectItems;
}

/**
 * 值改变事件 带出服务器名称
 * @param 
 */
public void quToService(ValueChangeEvent e){
    quTableId = (Integer) e.getNewValue();
    if(quTableId == null)return;
    serviceNameTables=fwqService.getAllOfFwq(quTableId);
    selectItems.setValue(serviceNameTables);
}

[/code]
页面:


/h:selectOneMenu

应该是你设置了这个属性的问题immediate="true",这个值为true的时候,是立即执行。也就是在Apply request value阶段各种验证什么都执行完了。