我有一个test表,里面有id,name,course,
数据:1,zs,zs1,
          2, zs,zs2
        3,ls  ls2
       4.ls   ls3
我的action里已经能得到这个表的List集合,求怎么用Struts2的标签显示2个下拉列表,第一个列表的值是zs,li,第二个列表的值是根据第一个列表值变化的值为,zs1,zs2或者ls2,ls3.
求标签代码实现。

解决方案 »

  1.   

    看看如下列子应该会懂:
    <script language="javascript">
    var ENum=new Array();//人员编号
    var DNum=new Array();//部门编号
    var EName=new Array();//人员姓名
    var tt=0;
       ENum[0]="";
       DNum[0]="";
       EName[0]="";
    <%while(m<CC.length)
    { %>
    ENum[tt]="<%=CC[m][0]%>";
    EName[tt]="<%=CC[m][1]%>";
    DNum[tt]="<%=CC[m][2]%>";
            tt++;
     <%m++;}%>
    function makeshi(){        //下面是给每个循环赋值  
        var shi=document.Form1.deppeople;//方便引用
    var x=document.Form1.depname.value;//获取下拉列表所选中的值
     var n=0;  
        for(var m=shi.options.length;m>=0;m--)
        //这个要看清楚,因为要重新填充下拉列表的话必须先清除里面原有的项,清除和增加当然是有区别的了,所以用递减
         { shi.options[m]=null;//将该项设置为空,也就等于清除了    
          //shi.remove(0);
         }

       
        for(var j=0;j<EName.length;j++){//这个循环是填充下拉列表
    if(x == DNum[j])
    {
     shi.options[n]=new Option(EName[j],ENum[j])
     n++;};
        }
       }
    </script> <select name="depname" onpropertychange="javascript:makeshi();">   <%//输出部门名称
      m=0;
      while(m<DD.length) 
    { %><option value="<%=DD[m][1]%>" ><%=DD[m][0]%></option>
                    <%m++;}%>
    </select>
    <select   name="deppeople" ><option value="">----</option></select>
    //其中CC数组放得是人员编号,名称,部门编号
    DD数组放得是所有部门编号和名称。
    上面实在来,先把所有部门显示出来,然后选择部门在另一个下拉列表中显示出这个部门下得所有员工
      

  2.   

    最烦js。。有没直接用struts2标签显示的代码没。我的List在action里已经得到了,就是传到jsp页面进行处理,不会。
      

  3.   

    <s:if>
    <s:else></else>
    </if>你循环的时候判断如果是你想要的就显示
      

  4.   

    参见此文实现,利用doubleselect标签:
    http://www.360doc.com/content/08/1123/12/61497_1984159.shtml
      

  5.   

    <s:form action="xyz">
    <s:doubleselect name="test" list="{zs,ls}"
    doubleList="top=='zs'?{'zs1','zs2'}:{'ls1','ls2'}"
    doubleName="db"></s:doubleselect>
    <s:submit value="提交">
    </s:form>
      

  6.   

    {zs,ls}少了2单引号。。悲剧,改改
      

  7.   

    这属于struts2 级联下拉菜单的问题
    <body>
      <s:form name="f1">
       <s:doubleselect list="一级的List" listKey="id" listValue="name"
        
        doubleList="courseMap.get(top.id)" doubleListKey="id" doubleListValue="name"/>
      </s:form>
     </body>
    private Map<Integer, List<course> courseMap;