转一篇经典的xtree文章[分析xloadtree, 用ajax实现的动态目录树]

这两天,为了实现ajax的树形目录,找了很多代码. 最后确定用xloadtree.

在xloadtree的主页上, 有项目xtree 和xloadtree  一个是固定显示的树,一个是动态加载的树.

在他的隐藏目录里,有一个xtree2  地址为http://webfx.eae.net/dhtml/xtree2b/  这个是正在测试的版本, 融合了xtree和xloadtree.  更新了代码, 但还是beta版.

xloadtree 可以在各种浏览器下通用. 兼容性效果非常好.

主要的三个文件:  xtree2.js, xloadtree2.js, xtree2.css
xloadtree2.js 主要是对ajax方式的封装, 实现异步调用. 显示树的时候,调用xtree2.js里面的代码. xtree2.css 控制树的显示式样.  在查看他的文档的时候,主要看xtree2的文档,这里面才有对树怎样进行操作. xloadtree只是个调用包装.

xtree2.js :
输出html代码的时候, 调用的是toHtml() 方法. 在这个方法中,其中最主要的是getRowHtml() 来得到每一行的输出.  方法中用 getExpandIconHtml() 来控制展开后图标的代码输出, getIconHtml()控制未展开的图标输出.  getLabelHtml() 控制文本的输出, 如果不想要图标,就把图标的输出代码屏蔽掉就OK.


关于在页面输出后,看不到源代码的调试方法:

<br/>
<INPUT type="button" name="ad" οnclick="charge();" value="change">
<br/>
<TEXTAREA rows="10" cols="30" id="ttt" name="ttt"></TEXTAREA>
<br/>
<INPUT type="button" name="findnode" οnclick="findnode();" value="findnode">
<br/>
<INPUT type="button" name="openpath" οnclick="openpath();" value="openpath">
<script>
    function charge(){
        document.getElementById('ttt').value=tree.getSelected().toHtml();
    }
   
    function findnode(){
        tree.findChildByText(document.getElementById('ttt').value,0);
    }
   
    function openpath(){
        tree.openPath(webFXTreeHandler.htmlToText(document.getElementById('ttt').value),true);
        tree.getSelected().expand();
    }
</script>
在页面中放置如上代码.  注意,先要获得树的句柄.  比较创建树的时候,用如下代码:

var tree = new WebFXTree("<%=rootname%>");
在展开的树点,选择后, 点击change 按钮,可以得到这个节点对应的html代码.  然后对应html可以找到相应的CSS. 这个就不多写了.

xloadtree在调用子节点树的时候,和服务器之间传输的是xml.
DTD的定义如下
<!ELEMENT tree (tree*)>
<!ATTLIST tree
            text        CDATA    #REQUIRED
            src            CDATA    #IMPLIED
            action        CDATA    #IMPLIED
            icon        CDATA    #IMPLIED
            openIcon    CDATA    #IMPLIED
            target        CDATA    #IMPLIED>

其中 text为显示文本,  src为下级目录目录的地址. action为点击的链接. icon为图标,openIcon为节点打开后的图标. target为目标,和a标签的target用法一样.


因为xml 文件不能传送< > 这种符号, 可以采用&lt; &gt; 传送.   因为项目里需要在树上显示HTML代码,所以在js里面做了修改.  修改的部分比较多. 还没有测试有没有意外情况. 这个以后再说.


还有, 在使用过程中,有一个BUG. 是设置tabindex的. 会出错.


this.setTabIndex(this.tabIndex);
将xtree2.js文件中的这一行屏蔽掉就行了. 当然,先要确定你不需要使用tab键定位. :)


2006- 4- 22 增加:
  在要打开指定目录树的时候 如果树里面包含html代码, 可以用如下语句
<script>try{top.tree.tree.openPath(webFXTreeHandler.htmlToText("/北京新东方学校/<font color=red><b>留学考试</b></font>/fff"),true);}catch(err){}</script>


2006-5-19
前天在同事应用的时候,出现的问题是加载过程中如果树结点为中文,就加载不上. 后来找到问题的原因是在用servlet输出xml 的时候,是用的steam的方式, 后来改成字符输出方式才正确. 如下.

            PrintWriter out=response.getWriter();
            out.write(outputXML.toString());
            out.flush();
            out.close();

 

 

posted on 2005-11-13 18:55 nickey's home 阅读(7107) 评论(79)  编辑 收藏 引用
 

Feedback
# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-15 16:28 zzb
你好,我从google里搜到你这篇文章,我也在网站上下了一个xloadtree的包.
我做了一个把数据库中取得的结果生成xml文件,在使用xloadtree,可以用.
我想请教你怎样可以取得节点的信息,因为当我取到了节点的信息,我可以通过该信息到数据库查找该节点包含的子节点并显示.
我说的可能不是太清楚,你能理解我的意思吗?可以告诉我一个解决的办法吗?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-15 23:25 nickey's home
嗯? 你的意思是动态加载一个节点么? xloadtree就是干这个的. 你可以参考bbs.tol24.com 网站的左侧树实现.  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-16 10:24 zzb
是的,我是想动态加载一个节点,
我的想法如下
-root
|
|---1
|
|---2
| |
| |-----2.1
| |-----2.2
| |-----2.3
|
|---3
| |
| |-----3.1
| |-----3.2
| |-----3.3

在这个里面,当我点击节点2的时候,应该可以出现子节点2.1,2.2,2.3;点击节点3出现3的子节点,这样我需要判断鼠标点击的是节点2还是节点3在去生成对应的子节点.

var rti;
var tree = new WebFXTree("Root");
tree.add(new WebFXTreeItem("1"));
tree.add(new WebFXLoadTreeItem("2", "2.xml"));
tree.add(new WebFXLoadTreeItem("3", "3.xml"));
在这段代码中,testtree.xml这个地方必须指定一个xml的文件,我试过把
tree.add(new WebFXLoadTreeItem("2", "2.xml"));
改为
tree.add(new WebFXLoadTreeItem("2", "2.jsp?id=2"));
,通过2.jsp来生成节点2的子节点,这些节点都是从数据库取出来的,但这样就会报错,所以我现在只能自己写一个2.jsp的程序来生成2.xml文件,这样的话就导致了这个树不是动态的生成.
我这样说你可以理解吗,我想请教你我这个程序是不是写的有问题,或者思路本身就是不对的.谢谢你的回复.  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-16 10:33 zzb
我看了你说的那个网站,它里面用到了xtree2.css,xtree2.js,xloadtree2.js,我下载的xloadtree里没有这些文件,我把它们下载下来放到本地,测试那个网站的程序,

var tree = new WebFXTree("酷学社区","forumIndex.jspa");
tree.setTarget("content");

提示:无法识别setTarget该方法.我看了WebFXTree的api也没有这个方法,

var category119=new WebFXLoadTreeItem("直播课堂", "forumTreeControl!load.jspa?treeNode=119","category.jspa?categoryID=119");
category119.setTarget("content");
tree.add(category119);

上面这段代码,我的理解是,
节点名称:直播课堂
生成节点的文件:forumTreeControl!load.jspa?treeNode=119
action:category.jspa?categoryID=119
setTarget是将action的路径在网页的哪个位置打开
这样理解对吗?
如果这样理解正确的话,
tree.add(new WebFXLoadTreeItem("esport", "node.jsp?nodeid=2"));
这样写就是没有问题的.是这样的吗?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-16 11:15 zzb
好了,我已经解决了这个问题,其实我只需要用jsp来生成一个xml文件即可,这样tree.add(new WebFXLoadTreeItem("esport", "node.jsp?nodeid=2"));就可以用了.  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-16 12:03 nickey's home
呵呵.整体思想还是很简单的.  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-21 16:36 hzqghost
请问,我想点击一个节点时关闭其他所有打开的节点,要怎么修改  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-22 11:51 jeafcn
已经在项目中使用了!  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-27 19:03 wds
遇到的两个问题:

1、我点开3个目录,那么重新load的时候,这三个目录自动展开。能不能自动展开最后一个,而不是全部3个,或者都不展开。

2、加载子目录的xml,里面的对象名称该怎么取,因为刷新之后我想把焦点还定位到已选择的目录。  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-27 21:03 cookie
他的cookie在哪里放着呀?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-29 14:38 lip199162
tree.add(new WebFXLoadTreeItem("esport", "node.php?nodeid=2"));

我是按这种方法引用的,这里有几个问题想请教一下:

1.我的node.php可以生成我想要的XML而且格式没有问题,但这里 esport 结点不会展开,只出现一个没有任何内容的对话框,很郁闷。

2.我对XML文件不了解,没用过,下面是我的XML请教一下:

<?xml version="1.0"?>
<tree>
<tree text="1sub" action="plist.php" target="main"/>
</tree>

这个XML没有问题,但如果我改成
<tree text="中文" action="plist.php" target="main"/>
这时就出问题了,问题就出在中文字符上,难道它不支持中文?

如果我改成
<tree text="1sub" action="plist.php?mid=3&sid=6" target="main"/>
这时也出现了问题,错误信息显示 应有分号 实在不明白。

以上两点,请教一下,谢谢。

  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-29 16:38 nickey's home
TO lip199162

1) WebFXLoadTreeItem 这个我是用的三个参数. 没有出现问题.
这样 : new WebFXLoadTreeItem("<%=category.getName()%>", "forumTreeControl!load.jspa?treeNode=<%=category.getID()%>","category.jspa?categoryID=<%=category.getID()%>");

2) 可能和你网页的编码有关...  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-29 18:07 lip199162
TO nickey's home

非常感谢你的帮助,关于我的第二个问题已经在你的帮助下解决了,谢谢你.

还是第一个问题,你提供的方法,可不可以详细些呀?

更重要的是 forumTreeControl!load.jspa

category.jspa 这两个文件是做什么用的,内容如何呀?

其实我的问题是,可以用 node.php?nodeid=2 生成相关 XML 文件, 但生成的XML如何才会自动被 WebFXLoadTreeItem 读入,调用呀?

谢谢你了  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-30 10:16 lip199162
<?xml version="1.0"?>
<tree>
<tree text="1sub" action="plist.php?mid=3&sid=6" target="main"/>
</tree>

这几行XML问题出在 plist.php?mid=3&sid=6 如果我改成 plist.php?mid=3或

plist.php?sid=6 都不会有问题

为什么这行语句不能有 & 这个字符呀,郁闷呀,求救一下,拜托了.  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-31 10:38 nickey's home
@lip199162
那就改成&amp; 试试?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-31 15:48 zz
呵呵,路过看看

我是用一个Servlet 直接吐出数据的,只要编码正确,都没有问题

想问一个问题,我树图是逐层加载的,当加载到最后一个节点的时候,后台会返回空数据,xloadtree就会出现错误,我只好返回一个xml来表示是空节点,比较难看,如何解决?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-03-31 16:15 lip199162
我的问题,已经解决了,真的很感谢各位,谢谢了  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-04-18 11:08 aaa
有没有谁用过这个东东,为啥非要生成一个xml 文件呢?能不能直接用从后台获取的xml 数据  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-04-20 16:31 hailang
我想知道如何在树上显示html代码,具体的js修改是哪些?
QQ:28308402  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-04-22 10:42 intraweb
在使用xloadtree生成xml文件并载入时,发现文件生成没有问题,但是在load时,页面有时显示error,说什么xml document have not top leve element,我查了xml文件,结构是没有问题的,不知道各位遇到过这种问题没有?是不是他的bug

具体我的步骤是将节点的src指定到一个jsp文件中,该jsp文件完成生成XML文件,并使用recpose.sendredirect到新的xml文件,不知是不是我的步骤有什么问题。我试了如果把生成文件和载入xml文件分在两个文件中分步完成基本没有问题。难道生成文件和载入xml要分为两步完成吗?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-04-24 16:42 nickey's home
TO intraweb

不应该转发, 应该直接输出xml.   回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-04-25 22:21 intraweb
我是使用javabean进行生成xml文件的,如何直接输出啊?难道要用servelet才行?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-04-27 15:42 minghaitang
现在的xloadtree都是一次异步调用,再点第2次的时候就不去后台取数据了,如何实现每次展开时都进行异步调用?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-01 18:36 wen4516
你好,,你能否告诉我让菜单一开始显示的就是全展开的状态吗。。。。这样显示比较直观  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-01 22:54 atoi
@wen4516
tree.expandAll();


另外,我也有一个问题,关于动态加载的。
我在自己的PHP程序中加载子节点。如果直接使用xtree2b演示使用的tree.xml,
var tic = new WebFXLoadTreeItem('asdf', 'tree.xml')
这样可以加载没有任何问题,但是我一旦把src参数改为php文件,不管带不带参数,都不能加载节点,即使我把tree.xml直接改名为tree.php都一样,显示的错误信息为:
Error loading tree.php (200: OK)
请问这是怎么回事?另外有没有什么方法可以调试?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-02 11:19 wen4516
我的菜单是与数据库相连的我没有定义它。显示方式是

<div class="dynamicMenu">
<menu:useMenuDisplayer name="ListMenu" pository="repository">
<menu:displayMenu name="DatabaseMenu"/>
<menu:displayMenu name="StandaloneMenu"/>
</menu:useMenuDisplayer>
</div>

怎样才能做到进入页面菜单以全展开的形式显现  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-10 18:44 kind
tree.add(new WebFXLoadTreeItem("Tree Item 2", "tree.xml", "http://www.google.com", "main", "", ""));
為什麼我加上main就不行呢,一片空白,去掉就好了
可是我不想把連接開在本窗口,而是想開在main窗口
有辦法嗎?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-12 10:21 小辉
我用的Weblogic为什么加载XML的时候老报错呀?我直接使用静态的demo.html也不能加载 XML,但是用Firefox就可以用了,什么原因呀  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-12 10:26 小辉
哪位大哥帮帮忙呀
我的问题很简单
我想运行demo.html文件,demo.html和Tree.xml都是下载的源文件,
用 IE 时 加载 XML 失败
用 Firefox 加载 XML 成功
放到Tomcat 使用IE中 成功
但是放到Weblogic使用IE 失败了
我们的工程使用的Weblogic,什么原因呀  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-12 10:26 小辉
哪位大哥帮帮忙呀
我的问题很简单
我想运行demo.html文件,demo.html和Tree.xml都是下载的源文件,
用 IE 时 加载 XML 失败
用 Firefox 加载 XML 成功
放到Tomcat 使用IE中 成功
但是放到Weblogic使用IE 失败了
我们的工程使用的Weblogic,什么原因呀  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-13 22:34 nickey
@小辉

xloadtree和用的什么服务器是没有关系的.
  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-14 02:31 vincent_qiutian
@nickey
应该没有关系,只要客户断支持JavaScript好像就行了:)  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-17 21:11 aa
写了一个读xml文件的方法,生成树,怎么传上去,想把展示图片页传上去  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-18 22:02 vincent_qiutian
你好,看了你写的文章对我的启发很大,但是在使用中却遇到了些问题,希望您能够给一些建议:
我采用了你提供的Xloadtree,一个JSP文件在执行的时候首先在指定的目录中生成了一个一个tree.xml文件,最后还是在这个页面下面调用了这个tree.xml
var atree = new WebFXLoadTree("系统权限","xmltreea.xml");
atree.build();

但是如果用户刷新了本页面后,tree.xml文件已经更新了内容,但是显示的还是上一次没有刷新的内容,为什么?

还有你给出的example.htm页面上有一个“重新加载异步树”的按钮调用了atree.reload()方法,但是我如果采用自己生成的XML调用这个方法IE就报错,后来发现,如果XML文件中没有这一行“<TreeNode text="递归加载" radio="true" src="tree.xml" />” 这个按钮就不起作用,能给我解答一下吗?

我所需要的就是每次调入的时候,能够都重新加载一遍XML文件,谢谢!
我的联络方式:
msn:qiutian1976@minihome.8800.org
QQ:568670(请注明XloadTree)
Email:qiutian1976@163.com

希望您能够在百忙之中抽出一些时间给与解答,谢谢!  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-19 09:32 nickey's home
@vincent_qiutian

但是如果用户刷新了本页面后,tree.xml文件已经更新了内容,但是显示的还是上一次没有刷新的内容,为什么?

这个情意我没有碰到过,重新开个IE 呢? 可能跟IE的缓存有关系,在request和meta里面设一下,不缓存,应该就没有问题了.

  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-19 14:00 vincent_qiutian
@nickey's home

你好,虽然添加在Request和Meta上添加了禁用缓存,但是在同一个IE浏览器中,刷新页面还是不好用,显示的还是第一次load进来的信息。
但是新开一个网页,输入网址却能解决这个问题,但是实际应用中我是用这个Tree来显示用户的权限列表的,当第一次调入的时候显示的是A的用户的权限列表,当我返回后点击B后,虽然XML文件已经更新,列表显示的还是A的权限,
我都郁闷了:(

  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-19 19:34 nickey's home
@vincent_qiutian
你的xml文件没有加吧...xml文件我也不知道怎么加...-_- 用servlet输出下?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-20 02:54 vincent_qiutian
@nickey's home
总结问题如下:
1.按照例子正确的配置了文件的路径和XML文件的路径,第一次打开本网页,可以显示正常信息,当进入同一个网页,但是参数传递不同的时候,后台已经重建了这个XML文件,但是,仍旧显示原来的信息
找到一个貌似可以解决的办法,再开一个新网页,然后输入这个XML文件的地址,例如:http://localhost:8080/test/xmltree.xml,浏览器就显示出了重建后的内容(说明,系统已经根据传递参数重新建立,并且文件生成正确),然后在切换到第一次打开的那个浏览器,这个时候刷新页面的时候,就会显示正确的结果了
但这个方法不具备实用性,因为用户不会按照你的这个麻烦的方式去操作
2.当把IE的缓存由“自动”设置成“每次访问页面都检测”,这样虽然刷新还是显示原有内容,但是刷新两次后就会显示正确内容。

以上问题通过不同的机器和操作系统反复测试,问题依旧。


我是用的环境是Tomcat 5 +JSP
通过以上情况判断,由于我的XML文件名称从来没有变更过(虽然内容在更新),Tomcat 缓存了我的这个XML文件,导致刷新后内容不变,但是我又找不到Tomcat怎么禁止缓存XML文件的方法,郁闷!

我猜想的解决方式,页面调用前,随机生成一个XML文件名称,然后让xloadtree去调用,调用结束后,在页尾删除这个XML文件,这样每次用户访问的时候是用的都是不同的XML文件,这样可以避免Tomcat缓存已经使用过的XML文件,这个只是我的想法,有时间测试一下。  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-20 19:26 vincent_qiutian
通过随机生成XML文件名称得方法解决了问题,但是Tomcat为什么缓存以前生成XML文件的问题依旧没有解决  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-21 10:20 nickey's home
@vincent_qiutian
不用随机文件名吧,加个随机参数就行了..  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-21 15:10 vincent_qiutian
@nickey's home
呵呵没有大区别了 :) 现在好用了! 谢谢你:)  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-23 22:45 wo
@nickey's hom
你用的是这个么?

open ('GET', file, true);
send ('');
每刷新一次,
就读一次文件
cache
是么  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-05-25 10:00 绝类
我想展开的时候对每个节点进行功能操作(例如填删改的操作)该如何实现?
有人做过类似的操作吗?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-12 13:59 ancory
我现在想通过一个jsp文件直接把xml文件的内容输出,而不是先生成xml文件,然后在取,这样总是提示内容为空!为什么啊,如果是servlet的情况我没有测试,另外通过一个javabean输出xml文件也应该可以吧?有人通过应用jsp文件成功了吗?这个jsp文件发个例子到上面看看,谢了!  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-14 09:13 zz
@ancory
很简单的,代码如下
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.io.*" %>
<%@ page import="org.jdom.*" %>
<%@ page import="org.jdom.input.DOMBuilder" %>
<%@ page import="org.jdom.output.*" %>
<%
try {
org.jdom.Document doc = (org.jdom.Document)request.getSession().getAttribute("TreeDoc");
response.setContentType("text/xml");
PrintWriter outt = response.getWriter();
XMLOutputter outer=new XMLOutputter(" ",true,"GBK");
outt.println(outer.outputString(doc));
}
catch (Exception ex) {
ex.printStackTrace();
}
%>  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-15 10:24 ancory
response.setCharacterEncoding("GB2312");
String s = (String)request.getParameter("keyID");
String s1 = ",again";
response.setContentType("text/xml, charset = GBK");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
out.println("<?xml version=/"1.0/" encoding=/"gb2312/"?>");
out.println("<tree>");
out.println(" <tree text=/"myxml1测试" + s + s1 + "/" action=/"http://webfx.eae.net">http://webfx.eae.net/" />");
out.println(" <tree text=/"myxml2/">");
out.println(" <tree text=/"myxml2.1/" action=/"javascript:alert(2.1)/" />");
out.println(" </tree>");
out.println(" <tree text=/"myxm13/" action=/"http://webfx.eae.net">http://webfx.eae.net/" />");
out.println("</tree>");
out.close();

这样不行吗?不支持中文!
org.jdom这个包我没有找到  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-15 10:28 ancory
PrintWriter out=response.getWriter();
out.write(outputXML.toString());
out.flush();
out.close();
这里的 outputXML是什么东西啊,我用一个StringBuffer得到xml格式的字符串,然后输入,还是不支持中文?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-15 11:46 nickey's home
噢. 统一用utf-8,不应该出现中文问题的.  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-19 15:53 zz
@ancory
我是用jdom 来解析xml 的

如果是用Servlet来输出数据,我设置如下
response.setCharacterEncoding("text/xml; charset=GBK");
..................
response.getWriter().println(str);//这里的str是一个xml字符,encoding="GBK"

页面的编码也是"GBK"

这里要注意Servlet的输入格式和编码,xml字符串的encoding,页面的编码  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-19 15:54 zz
这里要注意Servlet的response的setCharacterEncoding方式,xml字符串的encoding,页面的编码   回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-20 14:41 ancory
我用jsp和servlet都试过,都对中文不支持,昏了!  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-21 09:48 zz
@ancory
:(

是否编码不统一? 你先把xml字符串直接在页面上打印(servlet输出或jsp打印)看看,如果可以正常显示一般不会有问题

  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-21 13:32 ancory
直接打印都正常,编码没有问题,如果是从xml中读取也是正常的,就是通过jsp或servlet输出后就不正常,问题处在这里:xloadtree.js的_xmlFileLoaded(MyXmlHttp.responseXML, jsNode);
这行代码上,如果有中文MyXmlHttp.responseXML取到的就是空,所有总是弹出一个空提示框,难道你们和我的js文件不同?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-21 18:46 yehaoren
如果我想修改节点的名称,JS应该如何写,在线等解  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-22 16:41 ancory
@yehaoren
这是一个动态加载树,如果是从xml文件读取节点,直接改xml文件的第一个字段就可以了,如果是从数据库读取,就不存在问题了  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-22 16:57 ancory
现在有个问题:这个软件是有版权的,如果在项目中使用,会不会有问题啊,怎么解决呢?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-23 13:39 zz
@ancory
responseXML的确有时候会有问题,接收的东西为空
换成responseText试试

这个是开源的,不会有问题  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-23 15:22 ancory
@zz
谢谢指点,我查资料改好了。
现在我想问一下这个target在哪里设置,怎么设置呢?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-26 10:54 zz
<?xml version="1.0" encoding="UTF-8"?>
<tree>
<tree id="1" text="test1" src="" action="test?type=1" toolTip="test1" target="leftframe" />
</tree>

是这个target么?   回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-26 12:10 ancory
这个可以加,就是在开始的时候怎么加:
var tree = new WebFXTree("Root");
tree.add(new WebFXTreeItem("Tree Item 11","testxml.jsp"));
如果这个地方要加target,怎么加啊,试了好长时间没有成功!  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-06-26 17:00 zz
这个要修改xtree2.js文件
添加2个方法
//在1522行原先方法下添加
//zz
function WebFXTreeItem(sText, oAction,target) {
WebFXTreeAbstractNode.call(this, sText, oAction,target);
}
在288 行原先方法下添加
//zz
function WebFXTreeAbstractNode(sText, oAction,target) {
this.childNodes = [];
if (sText) this.text = sText;
if (oAction) this.action = oAction;
if (target) this.target = target;
this.id = webFXTreeHandler.getUniqueId();
if (webFXTreeConfig.usePersistence) {
this.open = webFXTreeHandler.persistenceManager.getExpanded(this);
}
webFXTreeHandler.addNode(this);
}

测试代码:
tree.add(new WebFXTreeItem("Tree Item 1","http://www.google.com","_about"));  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-07-05 15:22 xra
请高手帮忙:  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-07-05 15:30 xra
http://webfx.eae.net/dhtml/xtree2b/下载的xtree2b-20050606.zip,运行里面的xloadtreedemo.html,出错?已经把this.setTabIndex(this.tabIndex); 去掉。提示Error loading tree.xml(0:Unknown).
  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-07-05 16:01 xra
奇怪了啊,为什么我运行都是这样的错误啊!请大家不吝赐教啊!  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-07-05 16:24 xra
我刚试了下,启动tomcat以后再运行就没有问题,如果直接运行就会出错,郁闷!  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-07-19 12:00 fang
诸位,怎样一次展开所有节点呢?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-07-19 17:19 fang
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<title>XTree 2 Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link type="text/css" rel="stylesheet" href="css/xtree2b/xtree2.links.css"> _fcksavedurl=""css/xtree2b/xtree2.links.css">"
<script type="text/javascript" src="js/xtree2b/xtree2.js"></script>

<script type="text/javascript" src="js/xtree2b/xloadtree2.js"></script>


</head>
<body>

<script type="text/javascript">
//alert("ok");
var tree = new WebFXLoadTree("Hello World", "tree.xml");
tree.write();

</script>

</body>
</html>

以上代码出现问题 WebFXLoadTree 该问题怎么跟踪呢?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-07-19 17:20 fang
以上代码出现问题 'WebFXLoadTree'未定义 请问该问题怎么跟踪呢?   回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-07-19 17:54 fang
http://webfx.eae.net/dhtml/xtree2b/ 下载的东西在apache-tomcat-5.5.16下可用,而在Resin 1.2.10下不可用.

请问这是怎么回事?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-07-21 17:32 fang
请问用http://webfx.eae.net/dhtml/xtree2b/能否实现树型结构的多选框?  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-07-26 14:30 poplar
@nickey's home

怎么用随机参数啊?
我搞了一天也没有搞定,我是通过servlet从数据库中取数据,
但数据库数据更新了,但目录树怎么刷新也更新不了。
希望每次点击一个节点的时候能重新从数据库中取数据。
我用的web服务器是weblogic 8.14

  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-10-12 15:52 发
犯得上发射点法@lip199162
  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-10-19 21:25 itwhen
nickey 我也出现了这个问题
var tic = new WebFXLoadTreeItem('asdf', 'tree.xml')
这样可以加载没有任何问题,但是我一旦把src参数改为php文件,不管带不带参数,都不能加载节点,即使我把tree.xml直接改名为tree.php都一样,显示的错误信息为:
Error loading tree.php (200: OK)
请问这是怎么回事?
谢谢了   回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-10-19 22:23 itwhen
找到原因 动态返回内容前需要设置Content-Type为text/xml  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2006-11-23 19:01 wyq_tomorrow
有一段时间了,为了这个头都大了.
我用这个控件读取xml文件成功了,我用dom4j从数据库中读出文件,生成xml文件,然后进行 加载,添加子节点,删除节点都可以,但是我在删除最后一个节点之后,在初始化xml文件,xml文件已经变了,就是生成的树还是空的,我把网页关了,然后再打开就可以了,不知道原因,希望高手给与指教。  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2007-01-30 15:47 xief
IE上打开就得不到MyXmlHttp.responseXML中得xml内容是怎么解决得呀?各位大侠帮帮忙呀:(  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2007-02-27 15:06 hshen
把下面的语句注销掉即可
if (count == 0) {
jsNode.errorText = "Error loading " +jsNode.src + " (???)";
}  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2007-03-18 14:55 roroya
我用xloadtree做了动态加载的树,是通过servlet里把数据库的数据调出后改写成xloadtree定义的xml格式,然后加载的。现在有一个问题,就是,我想能不能有方法改一下xtree,让<tree>标签里的action属性能够支持两个javascript,意思就是,现在可以写成
String action = "javascript:doPriCategoryAction('" + name +"')";
能不能够写成两种方法?一种是点击节点时跳转页面,另外一种是鼠标滑移到某一个节点时能够显示一些节点信息?
希望大家共同讨论。  回复  更多评论
  


# re: 分析xloadtree, 用ajax实现的动态目录树 2007-03-26 00:28 ontology
请问怎么能在 点击+好按钮时候 生成需要的xml 然后再加载  回复  更多评论

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liuenyi/archive/2007/04/24/1581077.aspx

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值