用JSP编写select树形结构表单
JSP做 select 树形结构表单以前没做过,自己个人网站的后台发布系统首先被这个问题难住了!
PHP里要实现这个实在简单,只要一个function里 for(..;) echo "<select option=".$val."]".$name."</option>";
就搞定了,但JSP函数里直接写 out.println(
"<html>..");
就没反映,好像还提示Servlet错误之类的东西,所以我想了个笨一点办法!


<%@page contentType=
"text/html; charset=gb2312"%>
<%@page import=
"fourGuester.application.*,fourGuester.doDatabase.*,java.util.*" %>
<html>
  <head><title>JSP Page</title></head>
  <body>
<form action=
"setclass.php" method="post" name="setclass" id="setclass" onsubmit="javascript:return Juge(this);"]
 <table width=
"450" border="0" align="center" cellpadding="0" cellspacing="0"]
  <caption align=
"top"]
  <strong> 信 息 分 类 </strong>
  </caption>
  <tr>
   <td width=
"148" height="22"][div class="leftText"]上一级分类:[/div]</td>
   <td width=
"252"]
   <%!
    public String getClassesSelect(int parid,String classesVal,int num) throws Exception {
       DoClasses doClasses = new DoClasses();

       Collection allClasses = new ArrayList();

       allClasses = doClasses.getBooksByParId(parid);
      
       Iterator i = allClasses.iterator();
      
       String classesValue = classesVal;
      
       while(i.hasNext()) {
        Classes cla = (Classes)i.next();
        
        String name = cla.getClassName();
        int classid = cla.getCid();
        classesValue+=
"<option value="+classid+"]";
        for(int j=0;j < num;j++) {
          if(j == (num-1))
            classesValue+=
"└-";
          else
            classesValue+=
"  ";
        }
        
        classesValue+= name+
"</option>\n";
        
        classesValue+= this.getClassesSelect(classid,classesValue,num+1);
       }
      
       return classesValue;
    }
   %>
    <select name=
"parid" id="parid"]
     <option value=
"0"]根目录</option>
    <%
     DoClasses doClasses = new DoClasses();
    
     Collection allClasses = new ArrayList();
    
     int parid = 0;
     allClasses = doClasses.getBooksByParId(parid);
    
     Iterator i = allClasses.iterator();
     while(i.hasNext()) {
      Classes cla = (Classes)i.next();
      
      String name = cla.getClassName();
      int classid = cla.getCid();
      out.println(
"<option value="+classid+"]"+name+"</option>");
      
      int num = 0;
      String selectVal = this.getClassesSelect(classid,
"",num+1);
      out.println(selectVal);
     }
    %>
    </select> </td>
  </tr>
  <tr>
   <td height=
"22" class="leftText"]标题:</td>
   <td><input name=
"name" type="text"]</td>
  </tr>
  <tr>
   <td height=
"22" class="leftText"]描述:</td>
   <td><textarea name=
"des" cols="40" rows="6" wrap="VIRTUAL" id="des"]</textarea></td>
  </tr>
  <tr>
   <td height=
"30"]&nbsp;</td>
   <td><input name=
"set" type="submit" id="set" value="提交"] <input name="reset" type="reset" id="reset" value="reset"]</td>
  </tr>
 </table>
</form>
  </body>
</html>
meiking   2005-02-03 15:24:18 评论:2   阅读:2866   引用:0
Iterators let you process each element of a collec @2005-02-03 19:19:36  air_tuyh
for ( Iterator iter = myList.iterator(); iter.hasNext(); )
{
String key = (String) iter.next();
System.out.println( key );
}
这程序还有些错误 @2005-02-03 16:14:08  meiking
发现结果不理想,因为所有二级栏目的结果不知道为什么会出现了两个,三级栏目更是没能有规律,不知道是不是BEAN有问题..

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

谢智的个人博客 @CSS by self