xloadTree结合Struts2实现动态树结构
?? 前一段时间做一个管理系统,需要完成一个动态树目录功能,一般方案都推荐使用xloadtree这个ajax树结构目录组件,下载下来,配置使用还是比较简单的,但在实现动态生成方面,有点麻烦了。
?
?? 所有的demo,动态显示,需要读取一个规定格式的xml文档,然后分析该文档,自动显示相应的数据,这意味着如果不想对xloadtree组件做改动的话,必须为系统中的每一个分类生成一个对应的xml文档保存起来,不好管理,并且对分类做改动,必须对文件进行重新生成,性能必然有问题(虽然分类作为基础数据改动的频率并不高),另外一种方式就是把数据一次性生成一个xml文档,生成过程复杂,也同样不易维护。
?
?? 对js并不是很熟练,也放弃了直接修改xloadtree的想法,还是从比较熟练的Java方面下手,既然每次需要动态的去读取一个xml文档,那么干脆也不生成xml文档静态文件了,每次动态生成一个字符串,然后以文件流的形式直接传递给xloadtree好了。
?
?? 这样,只需要在xload动态获取数据时候,把xml文件的链接,替换为一个动态的Struts动作请求即可,这个是第一步。
?
?? 下一步就是在动作中,返回一个动态的xml文件字符流了,动作配置很简单,将内容转换为一个inputStream流,在流生成上,直接拼字符串,然后转换为流,但是在拼接过程中,太麻烦了,嘿嘿,而且一旦要改动,非常难,很容易出错。
?
? 想到了freemarker,先写好配置文件,然后把列表传入,直接构建相应的xml文档字符流,就简单了,模板文件易于编写和维护,代码里着重于数据的获取,spring提供了很好的freemarker支持,一切ok了。
?
? 然后。。。当然动态树目录结构就完成了。
?
?不过有一点,xloadtree支持链接点击执行js代码,那么支持复选框选择么?demo里面都没哟涉及到,粗略的翻了翻源代码,也米有见到相应的处理。
?
?