当前位置:编程学习 > JS >>

Struts2 <s:doubleselect>级联下拉框 详解析

运行环境:myeclipse8.6+jboss5.1+jvm1.6
 
先看最后目录结构:
 
 
直接上源码:
 
complexFormTag.jsp:
 
[html]  
<%@ page language="java" contentType="text/html; charset=gb2312"pageEncoding="gb2312"%>  
<%@ taglib prefix="s" uri="/struts-tags"%>  
<html>  
    <head>  
        <title>复杂表单标签使用范例</title>  
        <s:head />  
    </head>  
    <body>  
        <h3 align="left">doubleselect标签使用范例</h3>  
        <p>  
            <s:form name="doubleselectExample">  
                <s:doubleselect label="材料" headerValue="" headerKey="0"  
                    list="itemList" listKey="itemId" listValue="item"  
                    doubleName="materialId" doubleList="materialMap.get(top.itemId)"  
                    doubleListKey="materialId" doubleListValue="material" />  
            </s:form>  
        </p>  
    </body>  
</html>  
解析:
 
若不使用Struts2,则需要结合JavaScript和HTML标签共同开发完成此功能。
 
doubleselect标签的功能是提供两个有级联关系的下拉框。用户选中第一个下拉框中的某选项,则第二个下拉框中的选项根据第一个下拉框被选中的某选项内容来决定它自己的下拉框选项内容,产生联动效果。
 
下面是doubleselect标签的属性列表:
 
名称
 
必  需   
 
默认
 
类型
 
描述
 
list
 
 
 
Cellection Map
 
Enumeration Iterator array
 
要迭代的集合,使用集合中的元素来设置各个选项,如果list的属性为Map则Map的key成为选项的value,Map的value会成为选项的内容
 
listKey
 
 
 
 
 
 
 
 
 
String
 
 
 
指定集合对象中的哪个属性作为选项的value,该选项只对第一个列表框起作用
 
listValue
 
 
 
 
 
 
 
 
 
String
 
 
 
指定集合对象中的哪个属性作为选项的内容,该选项只对第一个列表框起作用
 
headerKey
 
 
 
 
 
 
 
 
 
String
 
 
 
设置当用户选择了header选项时,提交的的value,如果使用该属性,不能为该属性设置空值
 
headerValue
 
 
 
String
 
显示在页面中header选项内容
 
emptyOption
 
 
false
 
Boolean
 
 
 
multiple
 
 
false
 
Boolean
 
是否多选
 
size
 
 
 
Integer
 
显示的选项个数,该选项只对第一个列表框起作用
 
doubleId
 
 
 
String
 
指定第二个列表框的ID
 
doubleList
 
 
 
 
 
 
 
 
 
Cellection Map
 
Enumeration Iterator array
 
要迭代的集合
 
 
 
doubleListKey
 
 
 
 
 
 
 
 
 
String
 
 
 
指定集合对象中的哪个属性作为选项的value,该选项只对第二个列表框起作用
 
doubleListValue
 
 
 
 
 
 
 
 
 
String
 
 
 
指定集合对象中的哪个属性作为选项的内容,该选项只对第二个列表框起作用
 
doubleSize
 
 
 
Integer
 
选项个数
 
doubleName
 
 
 
String
 
指定第二个列表框的name映射
 
doubleValue
 
 
 
Object
 
第二个列表框的初始选种项
 
对于代码"materialMap.get(top.itemId)",其中的top返回的是材料类别map集合的value即材料list集合中的材料类对象实例。
 
注意:<s:doubleselect/>标签必须放在<s:form>中,放在普通<form>中会出错,而且s:form必须指定name属性。
 
另外,希望页面美观的话,希望s:doubleselect标签和左边的字对齐,则指定s:doubleselect属性theme="simple"
 
 希望两个select排成一行(默认是上下行的),则在<s:form></s:form>间加入css样式:
 
<style> 
    .nobr br{display:none}   
</style>
 
然后在用<div class="nobr"></div>把<s:doubleselect .. />包起来就可以了!
 
 下面通过一张图形象的表示联动关系:
 
 
对应的组件:                                                     &
补充:Web开发 , Jsp ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,