用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"] </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>
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"] </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 );
}
{
String key = (String) iter.next();
System.out.println( key );
}
这程序还有些错误
@2005-02-03 16:14:08 meiking
发现结果不理想,因为所有二级栏目的结果不知道为什么会出现了两个,三级栏目更是没能有规律,不知道是不是BEAN有问题..
