⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 e3.tree分享代码.txt

📁 树状结构功能很强大的 大家有兴趣可以下载下来看看。也许对你是个惊喜。
💻 TXT
字号:
2008年5月9号 需要种一颗复选框树,由于当时对e3还不了解,做了很猪的事.现将具体实现总结如下 

软件环境:jdk1.0+strust+hibernate+spring+e3+tomcat5.5框架 
开发工具:eclipse3.2.1 +myeclipse1.5.0GA 
页面JSP,调用对话框 以下是一个循环出来table里一个<TD> 
<td align="left"><%=(cmccFunction.getFCataRelate()==0)?cmccFunction.getFMethod()+"<input type=\"checkbox\" name=\"chk\" value=\""+cmccFunction.getFId()+"\" "+isTrue+"/> <input type=\"hidden\" id=\""+cmccFunction.getFId()+"\" name=\"\" value=\"\">":cmccFunction.getFMethod()+"<input type=\"checkbox\" name=\"chk\" value=\""+cmccFunction.getFId()+"\" "+isTrue+"/> <input type=\"hidden\" id=\""+cmccFunction.getFId()+"\" name=\"\" value=\"\" >"+ 
//----调用对话框 
"<div id=\"parentId\" style=\"z-index:1000;position:absolute;display:none; left:100px; width:300px; height:200px;\"><iframe id=\"frameId\" name=\"frameId\" src=\"\"></iframe></div><a href=\"javascript:showCol('"+url+"');\" >选择范围</a> "%></td> 
//对话框页面 

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 

<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
String funId = session.getAttribute("funId").toString(); 
%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<HTML> 
<HEAD> 
<link href="<%=path%>/images/style.css" rel="stylesheet" type="text/css" /> 
<script language="javascript" src="<%=path%>/js/roleProvideManager.js" type="text/javascript"></script> 
</HEAD> 
<script> 
function tovalue(id){//对话框将值传回主窗体 

var val = showSelectedNode(); 
parent.document.getElementById(id).value=val+"/"+id; 
parent.document.getElementById("parentId").style.display="none"; 

} 

</script> 
<BODY> 
<form name="Tree" action="" method="post"> 
<table> 
<tr> 
<td><%=request.getSession().getAttribute("treeScript") %></td> //这里使用的是e3API方式build出来的树 
</tr> 
<tr> 
<td align="right"> 
<input name="submitRole" type="button" class="submit1" value="提交" onclick="tovalue(<%=funId%>"/> 
</td> 
</tr> 
</table> 

</form> 
</BODY> 
</HTML> 
//SQL DAO 
public List getTreeNodes(){ 
log.debug("attaching clean CmccColumn instance"); 
try { 
List list = getHibernateTemplate().find("select c.CId,c.CParentid,c.CTitle from CmccColumn c"); 

log.debug("attach successful"); 
return list; 
} catch (RuntimeException re) { 
log.error("attach failed", re); 
throw re; 
} 


} 
\\ 以下是action 方法来具体实现树的结构及属性 
public ActionForward selectColumn(ActionMapping mapping, ActionForm form, 
HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
CmccColumn cmccColumnForm = (CmccColumn) form;// TODO Auto-generated method stub 
String funId = (String) request.getParameter("funId"); 

// 业务数据 
List orgs = new ArrayList(); 
ICmccColumnDAO dao = (ICmccColumnDAO)GetAppContext.getContext("CmccColumnDAOProxy",request); 
List list = dao.getTreeNodes(); //在数据库里得到 查询结果 
CmccColumn cmccColumn ; 
CmccColumn cmccCol = new CmccColumn() ; 
//这里根目录设置.写死了没有在代码表里 
cmccCol.setCId(Long.parseLong("10000000000001")); // 根节点ID 
cmccCol.setCParentid(null);//null说明这个节点是所有的父; 
cmccCol.setCTitle("栏目设置"); //名字 
orgs.add(cmccCol); // 先加入集合 

for(int i = 0;i<list.size();i++){ //遍历集合 这里我是将list转成Object对象,然后set到实体BEAN里 然后add到orgs集合里 
Object [] cmcc =(Object [])list.get(i); 
cmccColumn= new CmccColumn(); 
cmccColumn.setCId(Long.parseLong(cmcc[0].toString())); 
cmccColumn.setCParentid(Long.parseLong(cmcc[1].toString())); 
cmccColumn.setCTitle(cmcc[2].toString()); 
orgs.add(cmccColumn); 
} 

//规则待定暂不排序,业务解码器这块逻辑没动过..按E3 1.5文档做就可以了 
//业务数据解码器,从业务数据中分解出id和parentid 
UserDataUncoder orgUncoder = new UserDataUncoder(){ 
public Object getID(Object pUserData) throws UncodeException { 
CmccColumn cmccColumn = (CmccColumn)pUserData; 
return cmccColumn.getCId(); 
} 
public Object getParentID(Object pUserData) throws UncodeException { 
CmccColumn cmccColumn = (CmccColumn)pUserData; 
return cmccColumn.getCParentid(); 
} 
}; 

//Tree模型构造器,用于生成树模型 
AbstractWebTreeModelCreator treeModelCreator = 
new AbstractWebTreeModelCreator(){ 
//该方法负责将业务数据映射到树型节点 
protected Node createNode(Object pUserData, UserDataUncoder pUncoder) { 
CmccColumn cmccColumn = (CmccColumn)pUserData; 
WebTreeNode result = new WebTreeNode(cmccColumn.getCTitle(), "cmccColumn" + cmccColumn.getCId());// 
result.setNodeProperty("checkbox"); //设置节点属性为checkbox 
//action是点击按纽执行的方法.可以是url,或者javascript函数 action这个不用多说了 
// result.setAction("javascript:alert(' " + cmccColumn.getCTitle() + "')"); 
//result.setAction("javascript:alert(' " + result.getValue() + "')"); 
//result.setSelected(true); 
result.setValue(cmccColumn.getCId().toString()); //设置复选框VALUE 
//设置复选框默认选中的代码
	or(int i=0;i<trees.length;i++){
					if(!("".equals(trees[i])))
					{
						if(trees[i].toString().equals(result.getValue().toString())){
												
							result.setSelected(true);
						}
						
					}
				}
return result; 
} 
}; 

treeModelCreator.init(request); 
TreeModel treeModel = treeModelCreator.create(orgs,orgUncoder); 
TreeDirector director = new DefaultTreeDirector();//构造树导向器 
WebTreeBuilder treeBuilder = new CheckXTreeBuilder();//构造树Builder 这里new 的是checkbox树,其它说见1.5文档资料 
treeBuilder.init(request); 
director.build(treeModel, treeBuilder);//执行构造 
String treeScript = treeBuilder.getTreeScript();//获取构造树的脚本 
request.getSession().setAttribute("treeScript", treeScript);//保存到request,以便页面使用 
//request.getRequestDispatcher("XTree.jsp").forward(request,response); 
request.getSession().setAttribute("funId", funId); 



以上就是我的实现过程,其中在给checkbox value赋值的时候,由于对框架还不了解,在result.setvalue()里犯了傻,在黄云煇不嫌弃, 我个人不放弃的精神指引下,也成功的解决了,希望大家不要和我一样走弯路.特此发贴 有则改正,无则加冕 


return mapping.findForward("success"); 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -