下拉级联多选获取value值

1.经常很多地方会有这种需求 即是下拉又有级联关系,

自己手写的下拉框

页面代码如下:

<af:selectOneChoice label="学院" id="soc49"
                                        unselectedLabel="---请选择---"
                                        
                                        autoSubmit="true"
                                  valueChangeListener="#{viewScope.selectPublicBean.xyChange}"
                                        contentStyle="width:125px;">
                      <f:selectItems value="#{viewScope.selectPublicBean.toChoiceXY}"
                                     id="si109"/>
                    </af:selectOneChoice>
              <af:selectManyChoice label="专业" id="smc1" partialTriggers="soc49" autoSubmit="true"
                                   valueChangeListener="#{viewScope.selectPublicBean.dxChange}"
                                   >
                <f:selectItems value="#{viewScope.selectPublicBean.toChoiceZY}"
                               id="si2"/>
              </af:selectManyChoice>


 

后台JAVA代码为:

    /**
     * 学院值改变事件
     * @param valueChangeEvent 改变事件监听
     */
    public void xyChange(ValueChangeEvent valueChangeEvent) {
        String xyid = (String)valueChangeEvent.getNewValue();
        System.out.println("学院"+xyid);
        this.setXy(xyid);
        if (xyid != null) {
            this.setToChoiceZY(this.initzy(Integer.parseInt(xyid)));
        }
        this.bj = "";
    }
    
    /**
     * 初始化专业下拉框的值
     * @param dm 根据学院的值过滤下拉框的值
     * @return  zyid(代码),zymc(名称) 的Map集合
     */
    public Map<String, Object> initzy(int id) {
        Map<String, Object> map = new HashMap<String, Object>();
        String sql = "select zyid,zymc from xtgl_zy where dwid = " + id;
        DBTransaction db = getAm1().getDBTransaction();
        Statement st = db.createStatement(0);
        ResultSet rs = null;
        try {
            rs = st.executeQuery(sql);
            while (rs.next()) {
                map.put(rs.getString(2).toString(),
                        rs.getString(1).toString());
            }
        } catch (SQLException e) {
            e.printStackTrace();
            Noty.msg("查询数据异常");
        }
        return map;
    }
    public void dxChange(ValueChangeEvent valueChangeEvent) {
        List<String> id = (List<String>)valueChangeEvent.getNewValue();
        for(int i=0;i<id.size();i++){
            System.out.println("专业ID"+id.get(i));    
        }
    }