我公司项目,树形采用的是xloadTree,现在有个问题是不能实现结点的动态加载,只有写在页面上的根节点可以实现reload()方法。下面是生成树的代码。
/**
 * 生成部门树
 * 
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return
 * @throws Exception
 */
public ActionForward organizationTree(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
String path = request.getContextPath();
response.setHeader("Cache-Control", "no-store");
response.setHeader("Pragma", "No-cache");
response.setDateHeader("Expires", 0);
response.setContentType("text/xml; charset=GBK");
    PrintWriter pout = response.getWriter();
StringBuffer buf = new StringBuffer();
String nodeId = request.getParameter("nodeId");
// PrintWriter p = response.getWriter();
List treeList = new ArrayList();
HttpSession session = request.getSession();
// 从会话中获取当前用户的登陆名
String loginUserName = (String) session.getAttribute("cas_user");
User user = (User)userManager.getUserByLoginName(loginUserName);
// 获取用户的部门id
String orgId = user.getOrganization().getObjectID();
Organization parentOrg = (Organization)organizationManager.getOrgByOrgID(orgId);
request.setAttribute("parentOrg", parentOrg);
// treeList = organizationManager.getChildByOrgID("-1");
treeList = organizationManager.getChildByOrgID(orgId);
request.setAttribute("orgId", orgId);
Iterator it = treeList.iterator();
while (it.hasNext()) {
Organization or = (Organization) it.next();
List childList = organizationManager.getChildByOrgID(or
.getObjectID());
String treeId = null;
treeId = "var item_" + or.getObjectID();
buf.append(treeId + "=new WebFXLoadTreeItem('");
buf.append(or.getName());
if (childList.size() > 0) {
buf.append("','")
   .append(path)
   .append("/organization.do?method=organizationTreeChildNode&nodeId=");
buf.append(or.getObjectID());
}
buf.append("', '").append(path).append(
"/organization.do?method=getOrganizationById&nodeId=");
buf.append(or.getObjectID());
buf.append("') ;");
buf.append("item_root.add(item_" + or.getObjectID() + ");");
// buf.append(treeId+".reload()");
}
pout.println(buf.toString());
pout.flush();
pout.close();
    request.setAttribute("treeList", buf.toString());
} catch (Exception e) { } return null;
} /**
 * 生成部门树
 * 
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return
 * @throws Exception
 */
public ActionForward organizationTreeChildNode(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
String path = request.getContextPath();
StringBuffer buf = new StringBuffer(); String nodeId = request.getParameter("nodeId");
List treeList = new ArrayList();
treeList = organizationManager.getChildByOrgID(nodeId);
String treeId = null;
buf.append("<?xml version=\"1.0\" encoding=\"GBK\"?>");
buf.append("<tree>");
Iterator it = treeList.iterator();
while (it.hasNext()) {
Organization or = (Organization) it.next();
List childList = organizationManager.getChildByOrgID(or
.getObjectID());
treeId = "var itemsubtree_" + or.getObjectID();
buf.append("<tree text=\"");
buf.append(or.getName());
if (childList.size() > 0) {
buf.append("\" src=\"")
  .append(path)
.append("/organization.do?method=organizationTreeChildNode&amp;nodeId=");
buf.append(or.getObjectID());
}
buf.append("\" action=\"")
.append(path)
.append("/organizationList.do?method=getOrganizationById&amp;nodeId=");
buf.append(or.getObjectID());
buf.append("\"");
// buf.append("\" target='right'");
buf.append("/>");
}
buf.append("</tree>");
response.setHeader("Cache-Control", "no-store");
response.setHeader("Pragma", "No-cache");
response.setDateHeader("Expires", 0);
response.setContentType("text/xml; charset=GBK"); PrintWriter pout = response.getWriter();

pout.println(buf.toString());
pout.flush();
pout.close();
     request.setAttribute("trees", buf.toString());
} catch (Exception e) {
e.printStackTrace();
} return null;
}jsp页面调用的方法:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ page isELIgnored="false" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   <title></title>
<link href="<%=request.getContextPath()%>/sysadmin/css/common.css" rel="stylesheet" type="text/css">
<link href="<%=request.getContextPath()%>/sysadmin/css/xtree.css" rel="stylesheet" type="text/css"> </head>
<script language="javascript" src="<%=request.getContextPath()%>/sysadmin/js/xtree.js"></script>
<script language="JavaScript" src="<%=request.getContextPath()%>/sysadmin/js/xmlextras.js"></script>
<script language="javascript" src="<%=request.getContextPath()%>/sysadmin/js/xloadtree.js"></script>
<script language=javascript>
webFXTreeConfig.blankIcon = "<%=request.getContextPath()%>/images/xtree/blank.png"; 
webFXTreeConfig.rootIcon = "<%=request.getContextPath()%>/images/xtree/idt_tle_c.gif";
webFXTreeConfig.openRootIcon = "<%=request.getContextPath()%>/images/xtree/idt_tle_o.gif";
webFXTreeConfig.folderIcon = "<%=request.getContextPath()%>/images/xtree/idt_tle_c.gif";
webFXTreeConfig.openFolderIcon = "<%=request.getContextPath()%>/images/xtree/idt_tle_o.gif";
webFXTreeConfig.fileIcon = "<%=request.getContextPath()%>/images/xtree/idt_tle_c.gif";
webFXTreeConfig.lMinusIcon = "<%=request.getContextPath()%>/images/xtree/Lminus.png";
webFXTreeConfig.lPlusIcon = "<%=request.getContextPath()%>/images/xtree/Lplus.png";
webFXTreeConfig.tMinusIcon = "<%=request.getContextPath()%>/images/xtree/Tminus.png";
webFXTreeConfig.tPlusIcon = "<%=request.getContextPath()%>/images/xtree/Tplus.png";
webFXTreeConfig.iIcon = "<%=request.getContextPath()%>/images/xtree/I.png";
webFXTreeConfig.lIcon = "<%=request.getContextPath()%>/images/xtree/L.png";
webFXTreeConfig.tIcon = "<%=request.getContextPath()%>/images/xtree/T.png";
</script>

<script>
   function showPso(psoId){
     alert(psoId);
   }
</script>
  <body bgcolor="#D9E7FF" text="#000000" leftmargin="0" topmargin="0">
  <div>
 <script>
  var tendex_tree  = new WebFXTree('<bean:message key="org.manager" />');
  tendex_tree.setBehavior('classic');
 //  var item_root = new WebFXTreeItem('部门列表树', '');
 //  tendex_tree.add(item_root);
 // <c:import url="/organization.do?method=organizationTree"/>
 var item_root=new WebFXLoadTreeItem('${parentOrg.name}','<%=request.getContextPath()%>/organization.do?method=organizationTreeChildNode&nodeId=${orgId}', '<%=request.getContextPath()%>/organization.do?method=getOrganizationById&nodeId=${orgId}') ;
 tendex_tree.add(item_root); 
 document.write(tendex_tree) ;  
 /** 重新加载节点的方法*/  
        function reloadTree(){
        item_root.reload();
}
 </script>
</div> 
  </body>
</html>
/***********************************************************************************/
现在的问题是这样的,在调用reload()方法的时候,只有在页面直接写死的item_root可以使用,通过
PrintWriter pout = response.getWriter();
pout.println(buf.toString());
pout.flush();
pout.close();
代码传过来的的节点都没法调用。比如说我代码中拼装的一个节点叫test001,我调用test001.reload()方法总会有个test001为定义的js错误。不知道如何解决,请教各位高人。