Struts2中应用JQuery插件实现动态(Tree)结构
2015-04-23 21:48
513 查看
转自:/article/3906230.html
Struts2中使用JQuery插件实现动态树型(Tree)结构
最 近在给学校做公寓管理系统。使用部门要求选择宿舍床位时用树型结构。每栋楼有6层,每层有30个宿舍,每个宿舍有8个床位,这样每栋楼就会有1440个床 位,学校有12栋住宿楼,床位的数量比较大。考虑到如果加载页面时循环生成一个静态的树结构,会导致页面过大,加载时间过长。看了很多树型的实现,最后参 考了struts参考文档,决定用JQuery插件实现动态树。以下是实现过程和方法,可能不是最好的方法,仅供参考:
要用到的三个包如下(后面的版本号可以不同):
一、编写页面jsp:
1、在jsp页面顶部引入
2、在jsp的head部分加入<sj:head/>
3、在页面中需要显示树的地方加入如下代码:
在这里解释一下,id就是树的id,相当于html标签中的id;
href:当树节点被展开时需要执行的action;
jstreetheme:树的样式,插件中自带了两个样式,一个是classic,另一个是apple;
onClickTopics:在这里可以定义当节点被单击时,需要执行的javascript代码;
一般这几个属性就够用了。
4、在jsp页面的head部分编写当树节点被单击时的javascript代码,范例如下:
二、编写后台action
首先在action类中引入树节点类:import com.jgeppert.struts2.jquery.tree.result.TreeNode;
此类是在刚才导入的第三个包中定义的。
添加action的成员变量:private List<TreeNode> nodes = new ArrayList<TreeNode>();
添加此变量的get方法;
接下来我们要做的,就是给这个List型的nodes变量添加节点对象,供页面显示。比如我们创建一个节点对象
要给节点设置的信息可以从数据库中获取。
另 外比较不方便的是,在node的方法中没有单独设置某个节点被展开时调用的action方法。也就是说所有非叶子节点被展开时都是调用同一个action 方法。当我们需要为不同的节点设置不同类型的内容时就遇会到麻烦。这里给出一个解决方案,当用户在页面展开节点时,会将节点的id传递给后台,我们可以通 过将不同类型节点的id设置成不同的形式,在通过分析传递回来的id形式来执行相应的查询并返回结果。此id是通过request传递的,这是获取参数的 实例:
String id = ServletActionContext.getRequest().getParameter("id");
希望在此插件的下个版本中可以加上设置节点action的方法。
三、配置struts.xml
action所在的包需要继承自json-default,示例:
到此动态树功能完成。如果页面显示不正常的话,在页面的最顶端加上
Struts2中使用JQuery插件实现动态树型(Tree)结构
最 近在给学校做公寓管理系统。使用部门要求选择宿舍床位时用树型结构。每栋楼有6层,每层有30个宿舍,每个宿舍有8个床位,这样每栋楼就会有1440个床 位,学校有12栋住宿楼,床位的数量比较大。考虑到如果加载页面时循环生成一个静态的树结构,会导致页面过大,加载时间过长。看了很多树型的实现,最后参 考了struts参考文档,决定用JQuery插件实现动态树。以下是实现过程和方法,可能不是最好的方法,仅供参考:
要用到的三个包如下(后面的版本号可以不同):
struts2-json-plugin-2.2.3.jar; struts2-jquery-plugin-3.1.1.jar; struts2-jquery-tree-plugin-3.1.1.jar;
一、编写页面jsp:
1、在jsp页面顶部引入
<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>和 <%@ taglib prefix="sjt" uri="/struts-jquery-tree-tags"%>
2、在jsp的head部分加入<sj:head/>
3、在页面中需要显示树的地方加入如下代码:
<sjt:tree id="jsonTree1" href="jsonEmptyBedList.action" jstreetheme="classic" onClickTopics="treeClicked" />
在这里解释一下,id就是树的id,相当于html标签中的id;
href:当树节点被展开时需要执行的action;
jstreetheme:树的样式,插件中自带了两个样式,一个是classic,另一个是apple;
onClickTopics:在这里可以定义当节点被单击时,需要执行的javascript代码;
一般这几个属性就够用了。
4、在jsp页面的head部分编写当树节点被单击时的javascript代码,范例如下:
<script type="text/javascript"> $.subscribe('treeClicked', function(event, data) { //获取下item,这个就是被选中的树节点对象,很多操作就需要用到它 var item = event.originalEvent.data.rslt.obj; //其它需要的代码写在这里 //比如我们要将选中的节点id提示出来,可以像下面这样写 alert(item.attr("id")); }); </script>
二、编写后台action
首先在action类中引入树节点类:import com.jgeppert.struts2.jquery.tree.result.TreeNode;
此类是在刚才导入的第三个包中定义的。
添加action的成员变量:private List<TreeNode> nodes = new ArrayList<TreeNode>();
添加此变量的get方法;
接下来我们要做的,就是给这个List型的nodes变量添加节点对象,供页面显示。比如我们创建一个节点对象
TreeNode node = new TreeNode(); node.setId("1");//设置节点id node.setTitle("节点显示的标题"); node.setState(TreeNode.NODE_STATE_CLOSED);//此处引用了类中定义好的类型, //NODE_STATE_CLOSED表示节点默认是关闭的,前面显示+号, //如果需要创建一个叶子节点,此处传入TreeNode.NODE_STATE_LEAF。 node.setIcon("images/node.png");//此处可以设置节点要显示的图片 //上面是常用的几个属性。然后将node对象加入List中: nodes.add(node);
要给节点设置的信息可以从数据库中获取。
另 外比较不方便的是,在node的方法中没有单独设置某个节点被展开时调用的action方法。也就是说所有非叶子节点被展开时都是调用同一个action 方法。当我们需要为不同的节点设置不同类型的内容时就遇会到麻烦。这里给出一个解决方案,当用户在页面展开节点时,会将节点的id传递给后台,我们可以通 过将不同类型节点的id设置成不同的形式,在通过分析传递回来的id形式来执行相应的查询并返回结果。此id是通过request传递的,这是获取参数的 实例:
String id = ServletActionContext.getRequest().getParameter("id");
希望在此插件的下个版本中可以加上设置节点action的方法。
三、配置struts.xml
action所在的包需要继承自json-default,示例:
<package name="xxx" extends="json-default"> <action name="actionName" class="xxx.xxx"> <result type="json"> <param name="root">nodes</param> </result> </action> </package>
到此动态树功能完成。如果页面显示不正常的话,在页面的最顶端加上
<?xml version="1.0" encoding="utf-8"?>
相关文章推荐
- Struts2中应用JQuery插件实现动态(Tree)结构
- 用struts2 标签和Jquery 插件实现动态值,自动检索填充中值
- 使用jquery的 treetable插件实现树状结构 demo
- jquery插件TreeViewt实现动态树状结构
- Jquery实现无限级树状结构并动态添加增删改等编辑功能
- JQuery Tree 树形结构插件 zTree
- 树状结构---用jquery的小插件jquery.treeview实现树状结构
- PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
- PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
- 在自己的应用上使用Stevedore,实现插件的动态管理
- 封装的一个JQuery插件 ,作用是实现动态单元格合并
- jQuery插件实现控制网页元素动态居中显示
- jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
- jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
- 动态树(Link-Cut-Tree)结构与实现简讲
- Jquery的treeview插件实现树形结构
- 28款jQuery Tree 树形结构插件
- jquery实现图片放大效果应用jqeury插件
- Dtree+jQuery实现动态树结构
- Dtree+jQuery实现动态树结构