最近在做一棵树,参照xloadtree目前树已经出来了,但是不知道为何所有节点总是自动加载,并不是象预期设计的那样点一个节点才把下属节点显示出来,而是加载所有,找了半天摸不到头脑。工程采用springside开源框架。代码结构大概如下:
VIEW demo.jsp
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/common/taglibs.jsp" %>
<html>
<head>
<title> XTree 2 Demo </title>
<meta http-equiv="Content-Type" content="text/xml; charset=utf-8">
<link type="text/css" rel="stylesheet" href="css/xtree2.links.css">
<script type="text/javascript" src=" <c:url value='/stage/xtree2b/js/xtree2.js'/> "> </script>
<script type="text/javascript" src=" <c:url value='/stage/xtree2b/js/xmlextras.js'/> "> </script>
<script type="text/javascript" src=" <c:url value='/stage/xtree2b/js/xloadtree2.js'/> "> </script>
</head>
<body>
<script type="text/javascript">
var tree = new WebFXLoadTree("中国移动", " <c:url value='/stage/getTreeXML.do?method=getTree&id=1'/> ");
tree.write();
</script>
</body>
</html>
生成XML
package com.cosnetbj.as.commons.web.support; import java.io.PrintWriter;
import java.util.ArrayList; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.*; import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.springside.core.commons.BaseManageController;
import com.cosnetbj.as.plugins.security.domain.User;
import com.cosnetbj.as.supplierCenter.domain.ProductCategory;
import com.cosnetbj.as.supplierCenter.service.ProductCategoryManager; public class GetTreeXMLController extends BaseManageController{
private ProductCategoryManager productCategoryManager; public void getTree(HttpServletRequest request,
HttpServletResponse response) throws Exception {
response.setContentType("text/xml; charset=utf-8");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
PrintWriter out = response.getWriter(); //NEW 一个 XML 对象
Document doc = new Document(new Element("tree")); String orgId = "";
if(request.getParameter("id") != null){
orgId = request.getParameter("id");
ArrayList productCategoryList = (ArrayList)productCategoryManager.findByParentId(Integer.parseInt(orgId));
for(int i = 0;i < productCategoryList.size(); i ++){
ProductCategory productCategory = (ProductCategory)productCategoryList.get(i);
Element tree = doc.getRootElement();
Element inner = new Element("tree").setAttribute("text",productCategory.getName());
tree.addContent(inner);
if(productCategoryManager.ifParentCategory(productCategory.getId())){ //判断该节点下是否有别的子节点
inner.setAttribute("src", "/cmeppew/stage/getTreeXML.do?method=getTree&id="+productCategory.getId());
inner.setAttribute("expanded","false");
}
else{
System.out.println("bb");
inner.setAttribute("action","javascript:alert('aa')");
}
} Format format = Format.getCompactFormat();
format.setEncoding("utf-8");
format.setIndent("\t");
XMLOutputter xout = new XMLOutputter(format);
xout.output(doc, out);
out.flush();
out.close(); }
}
} 有知道的请告诉我 谢谢大家了 如果有合适的DEMO是否可以发我邮箱一下:[email protected](官网的DEMO别发了我参照那个做的)
VIEW demo.jsp
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/common/taglibs.jsp" %>
<html>
<head>
<title> XTree 2 Demo </title>
<meta http-equiv="Content-Type" content="text/xml; charset=utf-8">
<link type="text/css" rel="stylesheet" href="css/xtree2.links.css">
<script type="text/javascript" src=" <c:url value='/stage/xtree2b/js/xtree2.js'/> "> </script>
<script type="text/javascript" src=" <c:url value='/stage/xtree2b/js/xmlextras.js'/> "> </script>
<script type="text/javascript" src=" <c:url value='/stage/xtree2b/js/xloadtree2.js'/> "> </script>
</head>
<body>
<script type="text/javascript">
var tree = new WebFXLoadTree("中国移动", " <c:url value='/stage/getTreeXML.do?method=getTree&id=1'/> ");
tree.write();
</script>
</body>
</html>
生成XML
package com.cosnetbj.as.commons.web.support; import java.io.PrintWriter;
import java.util.ArrayList; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.*; import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.springside.core.commons.BaseManageController;
import com.cosnetbj.as.plugins.security.domain.User;
import com.cosnetbj.as.supplierCenter.domain.ProductCategory;
import com.cosnetbj.as.supplierCenter.service.ProductCategoryManager; public class GetTreeXMLController extends BaseManageController{
private ProductCategoryManager productCategoryManager; public void getTree(HttpServletRequest request,
HttpServletResponse response) throws Exception {
response.setContentType("text/xml; charset=utf-8");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
PrintWriter out = response.getWriter(); //NEW 一个 XML 对象
Document doc = new Document(new Element("tree")); String orgId = "";
if(request.getParameter("id") != null){
orgId = request.getParameter("id");
ArrayList productCategoryList = (ArrayList)productCategoryManager.findByParentId(Integer.parseInt(orgId));
for(int i = 0;i < productCategoryList.size(); i ++){
ProductCategory productCategory = (ProductCategory)productCategoryList.get(i);
Element tree = doc.getRootElement();
Element inner = new Element("tree").setAttribute("text",productCategory.getName());
tree.addContent(inner);
if(productCategoryManager.ifParentCategory(productCategory.getId())){ //判断该节点下是否有别的子节点
inner.setAttribute("src", "/cmeppew/stage/getTreeXML.do?method=getTree&id="+productCategory.getId());
inner.setAttribute("expanded","false");
}
else{
System.out.println("bb");
inner.setAttribute("action","javascript:alert('aa')");
}
} Format format = Format.getCompactFormat();
format.setEncoding("utf-8");
format.setIndent("\t");
XMLOutputter xout = new XMLOutputter(format);
xout.output(doc, out);
out.flush();
out.close(); }
}
} 有知道的请告诉我 谢谢大家了 如果有合适的DEMO是否可以发我邮箱一下:[email protected](官网的DEMO别发了我参照那个做的)
解决方案 »
- 火狐下创建一个原型对象问题
- 啦啦啦 看过来 js 拖拽 div 的问题 保存。
- js高亮关键字
- undefine错误!高手救命啊
- 请mrshelly来接分,“关于html元素除了能在事件中执行脚本外,还能通过其他方式执行脚本吗?的帖子”多谢补充。
- JS的一个问题。。。。
- 如何用JS实现:鼠标放在文字上,整行的背景色变色
- 页面载入时候刷新的问题,怎么只刷新一次?十万火急,
- 关于传变量的问题!会者不难,请高手指点一二.............
- 谁数学牛逼,进来看看,这段代码看了好久都没有明白,不知道为何这样设计
- 有关三角函数的问题(逆时钟旋转)
- 从服务器端的数据库中读取一条记录,将记录内容写到数组中,然后将该数组的内容写到客户端的数组
public ActionForward getTree(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)
{
String Psql="select distinct a.districtPid from BasDistrict a where a.delFlag=0";
List PidList = basDistrictManager.find(Psql);
StringBuffer sql = new StringBuffer();
sql.append("select new com.oppo.member.baseinfo.dto.TreeDTO(a.districtId,a.districtName,a.districtPid)");
sql.append(" from BasDistrict a where a.delFlag=0 and a.districtPid=1");
List list = basDistrictManager.find(sql.toString());
for(int i=0;i<list.size();i++)
{
TreeDTO one = (TreeDTO)list.get(i);
if(PidList.contains(one.getId()))
{
one.setHasChild("1");
}else{
one.setHasChild("0");
}
}
request.setAttribute("dataList",list);
return mapping.findForward("tree");
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import ="java.sql.*" %>
<%@ page import ="com.oppo.member.common.service.CommonManager" %>
<html>
<head>
<title>国家地区树</title>
<meta Http-equiv="Content-Type" Content="text/html; charset=UTF-8" />
<script Type="text/javascript" Src="../js/xtree.js"></script>
<script Type="text/javascript" Src="../js/xmlextras.js"></script>
<script Type="text/javascript" Src="../js/xloadtree.js"></script>
<link Type="text/css" Rel="STYLESHEET" Href="../css/xtree.css" />
</head>
<body Class='panelclass' leftmargin="5" topmargin="5" marginwidth="5" marginheight="5">
<script>
function toURL(Subjid){
parent.window.frames["MainFrame"].location.href = "../baseinfo/basDistrict.do?method=getList&districtPid=" + Subjid;
}
</script>
<script Type="text/javascript">
/// XP Look
webFXTreeConfig.rootIcon = "../images/xp/folder.png";
webFXTreeConfig.openRootIcon = "../images/xp/openfolder.png";
webFXTreeConfig.folderIcon = "../images/xp/folder.png";
webFXTreeConfig.openFolderIcon = "../images/xp/openfolder.png";
webFXTreeConfig.fileIcon = "../images/xp/file.png";
webFXTreeConfig.lMinusIcon = "../images/xp/Lminus.png";
webFXTreeConfig.lPlusIcon = "../images/xp/Lplus.png";
webFXTreeConfig.tMinusIcon = "../images/xp/Tminus.png";
webFXTreeConfig.tPlusIcon = "../images/xp/Tplus.png";
webFXTreeConfig.iIcon = "../images/xp/I.png";
webFXTreeConfig.lIcon = "../images/xp/L.png";
webFXTreeConfig.tIcon = "../images/xp/T.png";
webFXTreeConfig.blankIcon = "../images/xp/blank.png"; <%
oracle.jdbc.pool.OracleDataSource dataSource = null;
Connection conn=null;
PreparedStatement pstmt =null;
PreparedStatement pstmt2 =null;
ResultSet rset=null;
ResultSet rset2=null;
String SubjId=null;
String SubjName=null;
StringBuffer sbf=new StringBuffer(); try {
dataSource=(oracle.jdbc.pool.OracleDataSource)com.oppo.member.common.AppUtil.getBean("jdbcCon");
conn= dataSource.getConnection();
String queryStr="select DISTRICT_PID,DISTRICT_ID,DISTRICT_NAME from bas_DISTRICT where DISTRICT_PID = '0' and del_Flag != '1' "; pstmt = conn.prepareStatement(queryStr);
//查询结果
rset = pstmt.executeQuery(queryStr);
if (rset.next())
{
SubjId=rset.getString("district_id");
SubjName = new String(rset.getString("district_name").getBytes("iso8859-1"));
sbf.append("var tree = new WebFXTree(\""+SubjName+"\",\"javascript:toURL('"+SubjId+"')\");\n");
queryStr="select district_pid,district_id,district_name from bas_district where del_Flag != '1' and district_pid='"+SubjId+"' ";
rset = pstmt.executeQuery(queryStr);
while (rset.next())
{
SubjId=rset.getString("district_id");
SubjName = new String(rset.getString("district_name").getBytes("iso8859-1"));
queryStr="select count(*) a from bas_district where del_Flag != '1' and district_pid = '"+SubjId+"'";
pstmt2= conn.prepareStatement(queryStr);
rset2 = pstmt2.executeQuery(queryStr);
rset2.next();
if (rset2.getInt(1)>0)
{
sbf.append("tree.add(new WebFXLoadTreeItem(\""+SubjName+"\", \""+request.getContextPath()+"/DistrictTree.xml?districtId="+SubjId+"\",\"javascript:toURL('"+SubjId+"')\"));\n");
} else
{
sbf.append("tree.add(new WebFXTreeItem(\""+SubjName+"\",\"javascript:toURL('"+SubjId+"')\"));\n");
}
rset2.close();
pstmt2.close();
}
sbf.append("document.write(tree);\n");
}
}
catch (Exception ex) {
ex.printStackTrace();
out.print("错误的树");
}finally{
try {
rset.close();
pstmt.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
out.print(sbf.toString());
%>
</script>
</body>
</html>