struts2 的doubleSelect标签的使用

Code:
  1. Struts2提供了级联下拉选择框doubleselect标签,这对简化诸如省份/城市这样的典型需求的操作是大有好处的 ,本例是生成“部门->员工”的级联菜单。   
  2.   
  3. 第一步:本例用到的类的介绍:    
  4.   
  5.     部门类:SysDepartment    
  6.   
  7. view plaincopy to clipboardprint?   
  8. public class SysDepartment{      
  9.  private Integer dptId;//部门id       
  10.  private String dptName;//部门名称       
  11. //getter,setter方法       
  12. }     
  13. public class SysDepartment{   
  14.  private Integer dptId;//部门id    
  15.  private String dptName;//部门名称    
  16. //getter,setter方法    
  17. }    
  18.   
  19. 员工类:ErmEmployee    
  20.   
  21. view plaincopy to clipboardprint?   
  22. public class ErmEmployee{      
  23.  private Integer eplId;//员工id      
  24.  private String userName;//员工名称      
  25. //getter,setter方法      
  26. }     
  27. public class ErmEmployee{   
  28.  private Integer eplId;//员工id   
  29.  private String userName;//员工名称   
  30. //getter,setter方法   
  31. }    
  32.   
  33. 注:这里为了演示方便,部门和员工的关系表就不列出了,同时将java代码嵌入到jsp页面中。    
  34.   
  35. 第二步:生成部门和员工    
  36.   
  37. 以下是在jsp中生成部门和员工的代码字段:    
  38.   
  39. view plaincopy to clipboardprint?   
  40. <%      
  41. Map<SysDepartment, List<ErmEmployee>> map = new HashMap<SysDepartment, List<ErmEmployee>>();//map集合,key映射部门,value映射该部门下的员工      
  42.         SysDepartment d1=new SysDepartment();      
  43.         d1.setDptId(1);      
  44.         d1.setDptName("销售一部");      
  45.         SysDepartment d2=new SysDepartment();      
  46.         d2.setDptId(2);      
  47.         d2.setDptName("网络一部");      
  48.         SysDepartment d3=new SysDepartment();      
  49.         d3.setDptId(3);      
  50.         d3.setDptName("IT中心");      
  51.         List<ErmEmployee> elist1=new ArrayList<ErmEmployee>();//用list保存一个部门的所有员工      
  52.         ErmEmployee e1=new ErmEmployee();      
  53.         e1.setEplId(1);      
  54.         e1.setUserName("张三");      
  55.         ErmEmployee e2=new ErmEmployee();      
  56.         e2.setEplId(2);      
  57.         e2.setUserName("李四");      
  58.         ErmEmployee e9=new ErmEmployee();      
  59.         e9.setEplId(9);      
  60.         e9.setUserName("巩利");      
  61.         ErmEmployee e10=new ErmEmployee();      
  62.         e10.setEplId(10);      
  63.         e10.setUserName("赵薇");      
  64.         ErmEmployee e11=new ErmEmployee();      
  65.         e11.setEplId(11);      
  66.         e11.setUserName("刘德华");      
  67.         elist1.add(e1);      
  68.         elist1.add(e2);      
  69.         elist1.add(e9);      
  70.         elist1.add(e10);      
  71.         elist1.add(e11);      
  72.         List<ErmEmployee> elist2=new ArrayList<ErmEmployee>();      
  73.         ErmEmployee e3=new ErmEmployee();      
  74.         e3.setEplId(3);      
  75.         e3.setUserName("王五");      
  76.         ErmEmployee e4=new ErmEmployee();      
  77.         e4.setEplId(4);      
  78.         e4.setUserName("刘六");      
  79.         ErmEmployee e5=new ErmEmployee();      
  80.         e5.setEplId(5);      
  81.         e5.setUserName("吴邦国");      
  82.         elist2.add(e3);      
  83.         elist2.add(e4);      
  84.         elist2.add(e5);      
  85.               
  86.         List<ErmEmployee> elist3=new ArrayList<ErmEmployee>();      
  87.         ErmEmployee e6=new ErmEmployee();      
  88.         e6.setEplId(6);      
  89.         e6.setUserName("张学友");      
  90.         ErmEmployee e7=new ErmEmployee();      
  91.         e7.setEplId(7);      
  92.         e7.setUserName("关芝琳");      
  93.         ErmEmployee e8=new ErmEmployee();      
  94.         e8.setEplId(8);      
  95.         e8.setUserName("吴京");      
  96.         elist3.add(e6);      
  97.         elist3.add(e7);      
  98.         elist3.add(e8);      
  99.               
  100. //在map中保存部门和对应的员工      
  101.         map.put(d1,elist1);      
  102.         map.put(d2,elist2);      
  103.         map.put(d3,elist3);      
  104. //将map放到request范围      
  105.         request.setAttribute("map", map);      
  106. %>     
  107. <%   
  108. Map<SysDepartment, List<ErmEmployee>> map = new HashMap<SysDepartment, List<ErmEmployee>>();//map集合,key映射部门,value映射该部门下的员工   
  109.         SysDepartment d1=new SysDepartment();   
  110.         d1.setDptId(1);   
  111.         d1.setDptName("销售一部");   
  112.         SysDepartment d2=new SysDepartment();   
  113.         d2.setDptId(2);   
  114.         d2.setDptName("网络一部");   
  115.         SysDepartment d3=new SysDepartment();   
  116.         d3.setDptId(3);   
  117.         d3.setDptName("IT中心");   
  118.         List<ErmEmployee> elist1=new ArrayList<ErmEmployee>();//用list保存一个部门的所有员工   
  119.         ErmEmployee e1=new ErmEmployee();   
  120.         e1.setEplId(1);   
  121.         e1.setUserName("张三");   
  122.         ErmEmployee e2=new ErmEmployee();   
  123.         e2.setEplId(2);   
  124.         e2.setUserName("李四");   
  125.         ErmEmployee e9=new ErmEmployee();   
  126.         e9.setEplId(9);   
  127.         e9.setUserName("巩利");   
  128.         ErmEmployee e10=new ErmEmployee();   
  129.         e10.setEplId(10);   
  130.         e10.setUserName("赵薇");   
  131.         ErmEmployee e11=new ErmEmployee();   
  132.         e11.setEplId(11);   
  133.         e11.setUserName("刘德华");   
  134.         elist1.add(e1);   
  135.         elist1.add(e2);   
  136.         elist1.add(e9);   
  137.         elist1.add(e10);   
  138.         elist1.add(e11);   
  139.         List<ErmEmployee> elist2=new ArrayList<ErmEmployee>();   
  140.         ErmEmployee e3=new ErmEmployee();   
  141.         e3.setEplId(3);   
  142.         e3.setUserName("王五");   
  143.         ErmEmployee e4=new ErmEmployee();   
  144.         e4.setEplId(4);   
  145.         e4.setUserName("刘六");   
  146.         ErmEmployee e5=new ErmEmployee();   
  147.         e5.setEplId(5);   
  148.         e5.setUserName("吴邦国");   
  149.         elist2.add(e3);   
  150.         elist2.add(e4);   
  151.         elist2.add(e5);   
  152.            
  153.         List<ErmEmployee> elist3=new ArrayList<ErmEmployee>();   
  154.         ErmEmployee e6=new ErmEmployee();   
  155.         e6.setEplId(6);   
  156.         e6.setUserName("张学友");   
  157.         ErmEmployee e7=new ErmEmployee();   
  158.         e7.setEplId(7);   
  159.         e7.setUserName("关芝琳");   
  160.         ErmEmployee e8=new ErmEmployee();   
  161.         e8.setEplId(8);   
  162.         e8.setUserName("吴京");   
  163.         elist3.add(e6);   
  164.         elist3.add(e7);   
  165.         elist3.add(e8);   
  166.            
  167. //在map中保存部门和对应的员工   
  168.         map.put(d1,elist1);   
  169.         map.put(d2,elist2);   
  170.         map.put(d3,elist3);   
  171. //将map放到request范围   
  172.         request.setAttribute("map", map);   
  173. %>    
  174.   
  175. 第三步:在jsp页面插入struts2 doubleselect标签:    
  176.   
  177.   
  178. view plaincopy to clipboardprint?   
  179. <s:form action="doubleSelectPost" name="form1">     
  180.             <s:doubleselect       
  181.                 formName="form1"       
  182.                 label="业务员"     
  183.                 list="#request.map.keySet()"     
  184.                 name="dptId"     
  185.                 id="comboId"     
  186.                 listKey="dptId"     
  187.                 listValue="dptName"       
  188.                 doubleName="eplId"     
  189.                 doubleId="comboDoubleId"     
  190.                 doubleList="#request.map[top]"     
  191.                 doubleListKey="eplId"     
  192.                 doubleListValue="userName"  />         
  193.         </s:form>     
  194. <s:form action="doubleSelectPost" name="form1">   
  195.             <s:doubleselect    
  196.                 formName="form1"    
  197.                 label="业务员"  
  198.                 list="#request.map.keySet()"  
  199.                 name="dptId"  
  200.                 id="comboId"  
  201.                 listKey="dptId"  
  202.                 listValue="dptName"    
  203.                 doubleName="eplId"  
  204.                 doubleId="comboDoubleId"  
  205.                 doubleList="#request.map[top]"  
  206.                 doubleListKey="eplId"  
  207.                 doubleListValue="userName"  />     
  208.         </s:form>     
  209.   
  210. 说明:   
  211.   
  212. formName: 对应的表单名称。    
  213. label: 该级联下拉列表的标签。    
  214. name: 第一个下拉列表的名称。name="dptId"指明了第一个下拉列表名称为dptId。    
  215. id: 第一个下拉列表的id名称。    
  216. list: 指定用于输出第一个下拉列表框中选项的集合。本示例 list="#request.map.keySet()" 是将map的键(即部门)作为第一个下拉列表选项。    
  217. listKey: 指定集合元素中的某个属性作为第一个下拉列表框的value。listKey="dptId"是将部门id作为第一个下拉列表的值,在提交该表单时,参数名就是depId,值为listKey的值。如“dptId=1”    
  218. listValue:指定集合元素中的某个属性作为第一个下拉框的标签。listValue="dptName" 用部门名称作为标签,即下拉列表显示出来的值。    
  219. doubleName: 第二个下拉列表的名称。    
  220. doubleId: 第二个下拉列表的id名称。    
  221. doubleList: 指定用于输出第二个下拉列表框中选项的集合。本示例 #request.map[top] 是将map的值(即员工)作为第二个下拉列表选项。    
  222. doubleListKey: 指定集合元素中的某个属性作为第二个下拉列表框的value。doubleListKey="eplId"是将员工id作为第二个下拉列表的值。    
  223. doubleListValue: 指定集合元素中的某个属性作为第二个下拉框的标签。doubleListValue="userName" 用员工名称作为标签。    
  224. 到此,基本代码已经完成。执行该页面,得到如下页面:   
  225.   
  226.     
  227.   
  228. 可以看到,生成出来的级联下拉列表是分行的,如果不需要分行,可以怎么做呢?    
  229.   
  230. 以下介绍一个简单的方法,就是在<s:form>标签外包含标签:   
  231.   
  232. view plaincopy to clipboardprint?   
  233. <div class="doubleselect"><s:form>。。。</s:form>
     
  • <div class="doubleselect"><s:form>。。。</s:form>
  • 你可能感兴趣的:(java,jsp,struts,list,网络,setter)