struts2 的doubleSelect标签的使用

来源:互联网 发布:金山数据恢复大师安卓 编辑:程序博客网 时间:2024/04/29 10:01
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>
  •     
  •   
  • 然后加入css样式:   
  •   
  • view plaincopy to clipboardprint?   
  • <STYLE type="text/css">      
  •                 .doubleselect br{      
  •                     display:none;      
  •                 }      
  •             </STYLE>     
  • <STYLE type="text/css">   
  •                 .doubleselect br{   
  •                     display:none;   
  •                 }   
  •             </STYLE>    
  •   
  • 修改后,即可实现级联列表框在同一行显示了。效果如下:   
  •   
  •   
  •   
  •   
  •   
  • 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/security08/archive/2009/09/24/4586899.aspx  
  •  

    原创粉丝点击
    热门IT博客
    热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 耽误飞机了怎么办 家里气氛沉闷怎么办 高血氨病人该怎么办 真皮层缺水怎么办 身上有羊骚味怎么办 腋下臭羊骚味怎么办 店门口有羊骚味怎么办 羊蹄烂了怎么办 羊蹄剪破后怎么办 班级课堂沉闷怎么办 课堂乱哄哄怎么办 讲课语调平淡怎么办 不会讲课怎么办 讲课声音小怎么办 讲课声音沙哑怎么办 公司气氛低迷怎么办? 纸破损了怎么办 婚礼答谢宴怎么办 昊锐漏机油怎么办解决 气缸进水了怎么办 滑板开胶怎么办 魔网竞速豹没了怎么办 核桃尖摔掉了怎么办 第一次主持紧张怎么办 上台主持紧张怎么办 特别反感一个人怎么办 右眼模糊看不清怎么办 高血压眼睛模糊怎么办 眼睛看不到怎么办 眼睛有些红肿怎么办 一个眼睛看不到怎么办 幼儿园亲秀怎么办 学架子鼓扰民怎么办 提问环节冷场怎么办 村长滥用职权怎么办 村长违建怎么办 是笨小孩怎么办 笨小孩怎么办 胎心停了之后怎么办 试管婴儿无胎心怎么办 试管孕酮低怎么办