--文章源自一位网友
struts开发实践-简单树的实现
本案主要功能是完成用java语言写的一个简单的树,优点在于jsp页面的代码比较简单干净。缺点在于每次操作都要去服务器端再去取一次数据。近来在http://www.aspaid.com/网站找到一个javascript写的树,将js代码与java代码混编,可以得到一个功能比较全面的树,而且数据可一次性从服务器端取出,大家可以试一下。下面介绍的是前一种方法的代码实例。
1.定义MyTreeForm
package test;
import org.apache.struts.action.*;
import javax.servlet.http.*;
public class MyTreeForm
extends ActionForm {
/**id号*/
private int id = 0;
/**级别*/
private int level = 0;
/**名称*/
private String text = "";
/**上级节点*/
private String upIds = "0";
/**是否有子节点 0:no;1:yes;*/
private String haveChild = "0";
/**是否展开 //0:false;1:true;*/
private String ifExpanded = "0";
/**是否有下一个节点0:false;1:true;*/
private String haveNext = "0";
/**是否显示 0:visible;1:unvisible;*/
private String isVisible = "0";
/**节点链接串*/
private String link = "null";
public void setHaveChild(String haveChild) {
this.haveChild = haveChild;
}
public String getHaveChild() {
return haveChild;
}
public void setHaveNext(String haveNext) {
this.haveNext = haveNext;
}
public String getHaveNext() {
return haveNext;
}
public void setIfExpanded(String ifExpanded) {
this.ifExpanded = ifExpanded;
}
public String getIfExpanded() {
return ifExpanded;
}
public void setIsVisible(String isVisible) {
this.isVisible = isVisible;
}
public String getIsVisible() {
return isVisible;
}
public void setLink(String link) {
this.link = link;
}
public String getLink() {
return link;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setLevel(int level) {
this.level = level;
}
public int getLevel() {
return level;
}
public void setState(String state) {
this.state = state;
}
public String getState() {
return state;
}
public void setText(String text) {
this.text = text;
}
public String getText() {
return text;
}
public void setUpIds(String upIds) {
this.upIds = upIds;
}
public String getUpIds() {
return upIds;
}
public ActionErrors validate(ActionMapping actionMapping,
HttpServletRequest httpServletRequest) {
/**@todo: finish this method, this is just the skeleton.*/
return null;
}
public void reset(ActionMapping actionMapping,
HttpServletRequest httpServletRequest) {
}
}
2.你就可以将你要显示的树的结果集,按照myTreeForm的样式存放在新的list中。
3.jsp的显示代码节选:
<%@ page contentType="text/html;charset=GBK" %>
<%@ taglib uri="/bean" prefix="bean" %>
<%@ taglib uri="/html" prefix="html" %>
<%@ taglib uri="/logic" prefix="logic" %>
<html:errors/>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<%--树形显示区--%>
<td width="200" valign="top">
<html:form action="/sortAdminAction.do" method="post">
<table width="300" cellspacing="0" cellpadding="1">
<tr><td><a href="javascript:doGenerateTree('0')"><img src="images/base.gif" border="0" >root</a></td></tr>
<logic:iterate name="treeList" id="treeList" type="test.MyTreeForm">
<logic:equal name="treeList" property="ifExpanded" value="1">
<tr><td><img src="images/space.gif" width="<bean:write name="treeList" property="level"/>" height="1"><a href="javascript:doGenerateTree('<bean:write name="treeList" property="upIds"/>')"><img src="images/trees/no.gif" border="0"><bean:write name="treeList" property="text"/></a></td></tr>
</logic:equal>
<logic:equal name="treeList" property="ifExpanded" value="0">
<tr><td><img src="images/space.gif" width="<bean:write name="treeList" property="level"/>" height="1"><a href="javascript:doGenerateTree('<bean:write name="treeList" property="upIds"/>')"><img src="images/trees/have.gif" border="0"><bean:write name="treeList" property="text"/></a></td></tr>
</logic:equal>
</logic:iterate>
</table>
<html:hidden property="upIds"/>
</html:form>
</td></tr>
</table>
</body>
</html>
<SCRIPT LANGUAGE="JavaScript">
function doGenerateTree(upIds){
myTreeForm.upIds.value=upIds;
myTreeForm.submit();
}
</SCRIPT>
4。其实掌握了方法,写一简单树不成问题,如何写的树更美观、互动性更好、速度快还得花点功夫,有好的方法别忘了跟大家交流:)。