CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  框架、开源

struts中下拉列表的二级联动

楼主sealyx(向日葵)2006-03-07 20:07:57 在 Java / 框架、开源 提问

下拉列表一个显示总类     一个显示具体分类  
   
  现在我想先选择一个总类     具体分类根据选择显示相对应的具体分类。  
   
  希望   各位大侠多多指点,附带源码作为例子          
   
   
  谢谢 问题点数:50、回复次数:10Top

1 楼zeq258(周二强)回复于 2006-03-08 08:44:08 得分 0

一般的,如果只有二级级连,那么就在第一个的   onchange()   事件中,触发一个行为,把这个请求提交一次,在后台,根据输入的条件,查询出来第二个菜单的内容。Top

2 楼rickhunterchen(千山鸟飞绝)回复于 2006-03-08 09:12:22 得分 5

这个可以使用js做,可以参考下面的例子:  
  http://jfish.blog.ccidnet.com/blog/ccid/do_showone/tid_18378.htmlTop

3 楼zx2002027(http://www.netyi.net/in.asp?id=zx2002027)回复于 2006-03-08 22:27:54 得分 0

学习Top

4 楼SDMRauquin(冷月无心)回复于 2006-03-09 13:35:10 得分 10

我的级联标签时通过js实现的,只不过数据时通过java查询出来的  
   
  package   org.caexpo.common.tag;  
   
  import   static   org.caexpo.common.hibernate.HibernateSessionFactory.closeSession;  
  import   static   org.caexpo.common.hibernate.HibernateSessionFactory.currentSession;  
   
   
  import   java.io.IOException;  
  import   java.util.Iterator;  
  import   java.util.List;  
  import   java.util.Set;  
   
  import   javax.servlet.http.HttpServletRequest;  
  import   javax.servlet.jsp.JspException;  
  import   javax.servlet.jsp.JspWriter;  
  import   javax.servlet.jsp.tagext.TagSupport;  
   
  import   org.apache.log4j.Logger;  
  import   org.caexpo.nanbo.model.TCountry;  
  import   org.caexpo.nanbo.model.TProvince;  
  import   org.hibernate.Query;  
  import   org.hibernate.Session;  
   
   
  public   class   CPTag   extends   TagSupport  
  {  
          private   String   param1;  
          private   String   param2;  
          private   String   form;  
   
   
          private   static   Logger   log   =   Logger.getLogger(CPTag.class.getName());  
   
          public   int   doStartTag()   throws   JspException  
          {                  
                 
                  HttpServletRequest   request   =   (HttpServletRequest)   pageContext.getRequest();  
                  String   szCID   =   (String)request.getAttribute(param1);    
                  String   szPID   =   (String)request.getAttribute(param2);            
                   
                  try  
                  {        
                          JspWriter   out   =   pageContext.getOut();  
                          //jspwriter是一个隐含对象,用于向jsp网页输出内容。输出的目标由  
                          //   pagecontext.getout提供  
                          out.print(writeC(szCID,szPID).toString());   //向jsp网页上下文输出  
                  }  
                  catch   (IOException   ioException)  
                  {  
                          throw   new   JspException(ioException.getMessage());  
                  }                  
                  //catch  
                  return   SKIP_BODY;  
          }  
   
          private   StringBuffer   writeC(String   szCID,   String   szPID)  
          {  
                  TProvince   province   =   null;  
                  TCountry   country   =   null;  
                  Set   set   =   null;  
                   
                  Session   session   =currentSession();                  
   
                  Query   query   =session.createQuery("from   TCountry   as   a   order   by   a.countryid");                  
                  List   listC   =query.list();  
                   
                  closeSession();  
                   
                  StringBuffer   sb   =   new   StringBuffer();  
                   
                  sb.append("<table   border='0'>\n");  
                  sb.append("<tr>\n");  
                   
                  sb.append("<td>\n");  
                  sb.append("<select   name=\""+param1+"\"   id=\""+param1+"\"   style=\"width:150\"   onChange=\"redirect(this.options.selectedIndex)\"   >\n");  
                  sb.append("<option   value=\"0\">--请选择--</option>\n");  
                  if(listC   !=   null)  
                  {  
                          for(Object   c   :   listC)  
                          {      
                          country   =   (TCountry)c;  
                          if(szCID   !=   null   &&   !szCID.trim().equals("0")   &&   szCID.trim().equals(Long.toString(country.getCountryid()).trim()))  
                          {  
                          sb.append("<option   value=\""+((TCountry)c).getCountryid()+"\"   selected>"+((TCountry)c).getCountryname()+"</option>\n");  
                          }  
                          else  
                          {  
                          sb.append("<option   value=\""+((TCountry)c).getCountryid()+"\">"+((TCountry)c).getCountryname()+"</option>\n");  
                          }  
                          }  
                  }  
                  sb.append("</select>   \n");    
                  sb.append("</td>\n");  
                   
                  sb.append("<td>\n");  
                  sb.append("<select   name=\""+param2+"\"   id=\""+param2+"\"   style=\"width:100;display:none\">\n");    
          sb.append("<option   value=\"0\">--请选择省份--</option>\n");  
         
                  if(szCID   !=   null   &&   !szCID.equals("0")   &&   szPID   !=   null   &&   !szPID.equals("0"))  
          {  
                          for(int   i   =   0;   i   <   listC.size();   i++)  
                          {  
                          country   =   (TCountry)listC.get(i);                          
                          if(Long.toString(country.getCountryid()).trim().equals(szCID.trim()))  
                          {  
                          set   =   ((TCountry)listC.get(i)).getProvinceSet();  
                          for(Iterator   it   =   set.iterator();   it.hasNext();)  
                          {  
                          province   =   (TProvince)it.next();  
                          if(Long.toString(province.getProvinceid()).trim().equals(szPID.trim()))  
                          {  
                          sb.append("<option   value=\""+province.getProvinceid()+"\"   selected>"+province.getProvincename()+"</option>\n");  
                          }  
                          else  
                          {  
                          sb.append("<option   value=\""+province.getProvinceid()+"\">"+province.getProvincename()+"</option>\n");  
                          }  
                          }  
                          }  
                          }      
          }  
                   
                  sb.append("</select>   \n");                    
                  sb.append("</td>\n");  
                   
                  sb.append("</tr>\n");  
                  sb.append("</table>\n");  
                   
                  sb.append("<div   id=\"scriptDiv\"   style=\"display:none\">");  
                  sb.append("<script   language=\"javascript\"   type=\"text/javascript\">\n");  
                  sb.append("<!--\n");  
                  sb.append("var   groups   =   document."+form+"."+param1+".options.length;\n");  
                  sb.append("var   group   =   new   Array(groups);\n");  
                   
                  sb.append("for   (i   =   0;   i   <   groups;   i++)\n");  
                  sb.append("{\n");  
                  sb.append("         group[i]=new   Array();\n");  
                  sb.append("}\n");  
   
                  sb.append("group[0][0]=new   Option(\"请选择\",\"0\");\n");  
                   
                  if(listC   !=   null)  
                  {  
                          for(int   i   =   1;   i   <=   listC.size();   i++)  
                          {  
                          sb.append("group["+i+"][0]=new   Option(\"请选择\",\"0\");\n");  
                          int   j   =   1;  
                          set   =   ((TCountry)listC.get(i-1)).getProvinceSet();  
                          for(Iterator   it   =   set.iterator();   it.hasNext();)  
                          {  
                          province   =   (TProvince)it.next();  
                          sb.append("group["+i+"]["+j+"]=new   Option(\""+province.getProvincename()+"\",\""+province.getProvinceid()+"\");\n");    
                          j++;  
                          }                          
                          }  
                  }  
   
                  sb.append("var   temp=document."+form+"."+param2+";\n");  
                  sb.append("function   redirect(x)\n");  
                  sb.append("{\n");  
                  sb.append("         for   (m=temp.options.length-1;m>0;m--)\n");  
                  sb.append("         {\n");  
                  sb.append("             temp.options[m]=null;\n");  
                  sb.append("         }\n");  
                  sb.append("         for   (i=0;i<group[x].length;i++)\n");  
                  sb.append("         {\n");  
                  sb.append("                 temp.options[i]=new   Option(group[x][i].text,group[x][i].value);\n");  
                  sb.append("         }\n");  
                   
                  sb.append("         if(parseInt(temp.options.length)   >   1)\n");  
                  sb.append("       {\n");  
                  sb.append("                 document.getElementById(\""+param2+"\").style.display=\"block\";\n");  
                  sb.append("         }else   {\n");  
                  sb.append("               document.getElementById(\""+param2+"\").style.display='none';\n");  
                  sb.append("       }\n");  
                  sb.append("}   \n");  
                   
                  if(szCID   !=   null   &&   szPID   ==   null)  
                  {  
                          sb.append("         for   (i=0;i<group["+szCID+"].length;i++)\n");  
                          sb.append("         {\n");  
                          sb.append("                 temp.options[i]=new   Option(group["+szCID+"][i].text,group["+szCID+"][i].value);\n");  
                          sb.append("         }\n");                  
                  }  
                   
                  sb.append("         if(parseInt(temp.options.length)   >   1)\n");  
                  sb.append("       {\n");  
                  sb.append("                 document.getElementById(\""+param2+"\").style.display=\"block\";\n");  
                  sb.append("         }\n");  
                   
                   
                  //sb.append("redirect("+szCID.trim()+")\n");  
                   
                  sb.append("//-->\n");  
                  sb.append("</script>   \n");        
                  sb.append("</div>");  
                  return   sb;  
          }  
   
   
          public   void   setParam1(String   param1)   {  
                  this.param1   =   param1;  
          }  
   
          public   void   setParam2(String   param2)   {  
                  this.param2   =   param2;  
          }  
   
  public   void   setForm(String   form)   {  
  this.form   =   form;  
  }  
   
   
   
  }  
  Top

5 楼SDMRauquin(冷月无心)回复于 2006-03-09 13:35:36 得分 0

效果是    
   
  <table   border='0'>  
  <tr>  
  <td>  
  <select   name="countryId"   id="countryId"   style="width:150"   onChange="redirect(this.options.selectedIndex)"   >  
  <option   value="0">--请选择--</option>  
  <option   value="1">中国</option>  
  <option   value="2">文莱</option>  
  <option   value="3">柬埔寨</option>  
  <option   value="4">印尼</option>  
  <option   value="5">  
  老挝</option>  
  <option   value="6">马来西亚</option>  
  <option   value="7">缅甸</option>  
  <option   value="8">菲律宾</option>  
  <option   value="9">新加坡</option>  
  <option   value="10">泰国</option>  
  <option   value="11">越南</option>  
  <option   value="2001">china</option>  
  <option   value="2002">Brunei  
  </option>  
  <option   value="2003">Cambodia  
  </option>  
  <option   value="2004">Indonesia  
  </option>  
  <option   value="2005">Laos   Malaysia</option>  
  <option   value="2006">Malaysia  
  </option>  
  <option   value="2007">Myanmar  
  </option>  
  <option   value="2008">Philippines</option>  
  <option   value="2009">Singapore  
  </option>  
  <option   value="2010">Thailand  
  </option>  
  <option   value="2011">Vietnam  
  </option>  
  </select>    
  </td>  
  <td>  
  <select   name="provinceId"   id="provinceId"   style="width:100;display:none">  
  <option   value="0">--请选择省份--</option>  
  </select>    
  </td>  
  </tr>  
  </table>  
  <div   id="scriptDiv"   style="display:none"><script   language="javascript"   type="text/javascript">  
  <!--  
  var   groups   =   document.registerForm.countryId.options.length;  
  var   group   =   new   Array(groups);  
  for   (i   =   0;   i   <   groups;   i++)  
  {  
          group[i]=new   Array();  
  }  
  group[0][0]=new   Option("请选择","0");  
  group[1][0]=new   Option("请选择","0");  
  group[1][1]=new   Option("北京","1");  
  group[1][2]=new   Option("上海","2");  
  group[1][3]=new   Option("广东","3");  
  group[1][4]=new   Option("广西","4");  
  group[1][5]=new   Option("安徽","5");  
  group[1][6]=new   Option("山东","6");  
  group[1][7]=new   Option("福建","7");  
  group[1][8]=new   Option("甘肃","8");  
  group[1][9]=new   Option("贵州","9");  
  group[1][10]=new   Option("海南","10");  
  group[1][11]=new   Option("河北","11");  
  group[1][12]=new   Option("河南","12");  
  group[1][13]=new   Option("黑龙江","13");  
  group[1][14]=new   Option("吉林","14");  
  group[1][15]=new   Option("江苏","15");  
  group[1][16]=new   Option("浙江","16");  
  group[1][17]=new   Option("江西","17");  
  group[1][18]=new   Option("辽宁","18");  
  group[1][19]=new   Option("内蒙古","19");  
  group[1][20]=new   Option("宁夏","20");  
  group[1][21]=new   Option("青海","21");  
  group[1][22]=new   Option("山西","22");  
  group[1][23]=new   Option("陕西","23");  
  group[1][24]=new   Option("四川","24");  
  group[1][25]=new   Option("天津","25");  
  group[1][26]=new   Option("西藏","26");  
  group[1][27]=new   Option("新疆","27");  
  group[1][28]=new   Option("云南","28");  
  group[1][29]=new   Option("重庆","29");  
  group[1][30]=new   Option("湖南","30");  
  group[1][31]=new   Option("湖北","31");  
  group[1][32]=new   Option("香港","32");  
  group[1][33]=new   Option("澳门","33");  
  group[1][34]=new   Option("台湾","34");  
  group[2][0]=new   Option("请选择","0");  
  group[3][0]=new   Option("请选择","0");  
  group[4][0]=new   Option("请选择","0");  
  group[5][0]=new   Option("请选择","0");  
  group[6][0]=new   Option("请选择","0");  
  group[7][0]=new   Option("请选择","0");  
  group[8][0]=new   Option("请选择","0");  
  group[9][0]=new   Option("请选择","0");  
  group[10][0]=new   Option("请选择","0");  
  group[11][0]=new   Option("请选择","0");  
  group[12][0]=new   Option("请选择","0");  
  group[13][0]=new   Option("请选择","0");  
  group[14][0]=new   Option("请选择","0");  
  group[15][0]=new   Option("请选择","0");  
  group[16][0]=new   Option("请选择","0");  
  group[17][0]=new   Option("请选择","0");  
  group[18][0]=new   Option("请选择","0");  
  group[19][0]=new   Option("请选择","0");  
  group[20][0]=new   Option("请选择","0");  
  group[21][0]=new   Option("请选择","0");  
  group[22][0]=new   Option("请选择","0");  
  var   temp=document.registerForm.provinceId;  
  function   redirect(x)  
  {  
          for   (m=temp.options.length-1;m>0;m--)  
          {  
              temp.options[m]=null;  
          }  
          for   (i=0;i<group[x].length;i++)  
          {  
                  temp.options[i]=new   Option(group[x][i].text,group[x][i].value);  
          }  
          if(parseInt(temp.options.length)   >   1)  
        {  
                  document.getElementById("provinceId").style.display="block";  
          }else   {  
                document.getElementById("provinceId").style.display='none';  
        }  
  }    
          if(parseInt(temp.options.length)   >   1)  
        {  
                  document.getElementById("provinceId").style.display="block";  
          }  
  //-->  
  </script>Top

6 楼sealyx(向日葵)回复于 2006-03-10 17:30:20 得分 0

楼上兄弟的     方法可以        
   
  但我的     方法是       选择第一个的时候     onchang提交表单       根据所选   查询第二个列表内容  
   
  可是新的问题又出现了     第一个列表中我选的值被刷新显示为未选时的数据??  
  我的环境是   struts   下做的  
  ??  
  那位兄弟       有好的解决方案??  
  谢谢             盼望中。。。。。。。。。。。。。。。。。。Top

7 楼zhang21cnboy(事了抚衣去,不留身与名)回复于 2006-03-10 17:53:07 得分 5

如果数据不多,全部取到浏览器里面搞,不要提交给服务器。Top

8 楼SDMRauquin(冷月无心)回复于 2006-03-11 11:21:00 得分 0

第一个列表中我选的值被刷新显示为未选时的数据  
   
  那么你第二个列表的内容能否正常出来?Top

9 楼SDMRauquin(冷月无心)回复于 2006-03-11 11:25:32 得分 10

你用同一个页面,同一个Form。并且用struts   标签作下拉菜单  
   
  onchang后还是回到原来的页面。  
   
  因为struts   标签时自动从Form里面取值的。Form值不会消失,所以这个下拉显示的值   ,还是你选择递交时候的值。  
   
  Top

10 楼SDMRauquin(冷月无心)回复于 2006-03-11 11:27:58 得分 20

<script   language="JavaScript">  
  <!--  
  function   onChange()  
  {  
        thisForm   =   document.boothForm;        
        thisForm.action="/expo/boothSearch.do";  
        thisForm.submit();            
  }  
  //-->  
  </script>  
   
  <html:select   property="expohallid"   style="width:200;"   onchange="onChange()">  
          <html:option   value="0">请选择</html:option>  
          <html:optionsCollection   name="expoHallList"   value="expohallid"   label="boothname"   />  
  </html:select>  
   
  html:optionsCollection中是Java搜索出来,   set到expoHallList中去的Top

相关问题

  • 二级联动问题
  • 二级联动的问题
  • 我是个Asp菜鸟,请教个Select列表框二级联动的问题,还请高手大虾们指教,急!
  • 二级联动菜单的做法??
  • 关于二级联动select框
  • 二级联动问题(急在线等)
  • 二级联动的问题 郁闷ing
  • asp中用VBScript实现下拉列表框联动
  • 实现三级联动下拉列表框,求高人帮忙!!!!
  • 高手请进-jsp中联动下拉列表(高分)

关键词

  • 查询
  • 数据
  • struts
  • 选择
  • hibernate
  • 内容
  • servlet
  • jsp
  • caexpo
  • 列表

得分解答快速导航

  • 帖主:sealyx
  • rickhunterchen
  • SDMRauquin
  • zhang21cnboy
  • SDMRauquin
  • SDMRauquin

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo