39.二级联动

转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html

<s:bean name="com.asm.TwoSelectAction" id="ts"></s:bean>

<s:doubleselect

                            list="#ts.place"                         

                     listKey="pId" listValue="pName"
name="user.place"

                           

                            doubleList="#ts.citys[top]"

                            doubleListKey="cId"    doubleListValue="cName"

                            doubleName="user.city"

                            label="籍贯4(二级联动)">

</s:doubleselect>

它所依赖的TwoSelectAction类的主要代码如下:
package com.asm;

public class TwoSelectAction extends ActionSupport {

       private List<Province> place;

       private Map<Province,List<City>> citys;

       ...省略place 、citys中get/set方法

       public TwoSelectAction(){

              place= new ArrayList<Province>();

              citys=new HashMap<Province,List<City>> ();

             

              Province p1=new Province(1,"山东省","济南");

              Province p2=new Province(2,"山西省","太原");

              Province p3=new Province(3,"河南省","郑洲");

              Province p4=new Province(4,"河北","石家庄");

              Province p5=new Province(5,"四川","成都");

              Province p6=new Province(6,"云南","昆明");

              place.add(p1);

              place.add(p2);

              place.add(p3);

              place.add(p4);

              place.add(p5);

              place.add(p6);

             

              //山东省的市:

              City c1=new City(1,"济南");

              City c2=new City(2,"招远市");

              City c3=new City(2,"寿光市");

              List p1City=new ArrayList();

              p1City.add(c1);

              p1City.add(c2);

              p1City.add(c3);

             

              //山西省的市:

              City c4=new City(4,"太原市");

              City c5=new City(5,"大同市");

              City c6=new City(6,"晋中市");

              List p2City=new ArrayList();

              p2City.add(c4);

              p2City.add(c5);

              p2City.add(c6);

             

              //河南省的市:

              City c7=new City(7,"郑州市");

              City c8=new City(8,"卫辉市");

              City c9=new City(8,"信阳市");

              List p3City=new ArrayList();

              p3City.add(c7);

              p3City.add(c8);

              p3City.add(c9);

             

              //河北省的市:

              City c10=new City(10,"石家庄");

              City c11=new City(11,"晋州市");

              City c12=new City(12,"鹿泉市");

              List p4City=new ArrayList();

              p4City.add(c10);

              p4City.add(c11);

              p4City.add(c12);

             

             

              //四川省的市:

              City c13=new City(13,"成都");

              City c14=new City(14,"南充");

              City c15=new City(15,"绵阳");

              List p5City=new ArrayList();

              p5City.add(c13);

              p5City.add(c14);

              p5City.add(c15);

             

              //云南省的市:

              City c16=new City(16,"昆明市");

              City c17=new City(17,"安宁市");

              City c18=new City(18,"曲靖市");

              List p6City=new ArrayList();

              p6City.add(c16);

              p6City.add(c17);

              p6City.add(c18);

             

              citys.put(p1,p1City );

              citys.put(p2,p2City );

              citys.put(p3,p3City );

              citys.put(p4,p4City );

              citys.put(p5,p5City );

              citys.put(p6,p6City );

       }

}

简要分析:此实例有些繁琐,主要思想:我们的place对象主要为一级列表服务,只要理解了前面的下拉列表,这里不难理解一级列表。而二级列表中我们使用#ts.citys[top]取出的一个List对象,这样也正是下拉列表所要求的对象类型(List,Map),而top是非常关键的,它明确指出我们取出的是栈顶的对象,这样就能根据一级列表的值来动态生成这个List对象。

原文地址:https://www.cnblogs.com/sharpest/p/5587943.html