最近的一个项目。用到了struts2的树形菜单。刚开始觉得有些难。在网上找了一些资料。不过好像都没有一个是特别的符合自己的需求。静态的我就不说了。网上多的是。这里就说说动态树的构造吧。
谈struts2动态树必定要谈到<s:tree/>标签,那先我还是谈谈这标签的一些属性。因为在构造动态树的时候。这些属性是相当重要的。
<s:tree rootNode="root"
nodeIdProperty="id"
nodeTitleProperty="name"
childCollectionProperty="childrens"
showRootGrid="true"
showGrid="true"
theme="bgtheme"
id="nodeId">
</s:tree>
rootNode属性是树形菜单的根。这个对象的构造需要有些特别(也是树形菜单每个节点),必须包涵nodeIdProperty,nodeTitleProperty属性的值(”Id“和“name”)的属性;和childCollectionProperty属性值(childrens)的“getChildrens()”方法;
比如这样一个对象:
public class StrutsTreeNode {
//父子结点之间的连接符
public static final String link = "--";
//本节点ID
private int id;
//父节点ID,为0表示第一层结点
private int parentId;
//父节点,为null表示第一层结点
private StrutsTreeNode parent;
//结点名
private String name;
//结点全名
private String nameAll;
//结点使用图片文件名,为空用缺省的
private String iconFile;
//结点点击对应的URL
private String url;
//结点点击对应的target
private String target;
//结点所在层数
private int layers = 0;
//是否需要check
private boolean bckeck = false;
//是否check,0-否,1-是
private int checkValue = 0;
//是否固定选择项,0-否,1-是
private int fixup = 0;
//数据
private String data;
private List<StrutsTreeNode> childrens = new ArrayList<StrutsTreeNode>();
这里的字段有很多。其他的一些并不是必须的。当然 setter 和getter是必不可少的了。
有了这个对象,那么如何更数据库的数据联系起来呢。那么就需要我们去将数据库里的数据构造成这样要的一个对象了。就拿前段时间这个项目中数据来说吧。
public class Terrain {
private long terrainId;
private long fatherTerrainId;
private String terrainName;
private String fullName;
private String terrainDesc;
}
这个是一个持久化类。这个类中最重要的两个属性就是terrainId,fatherTerrainId。因为他们是组合成树需要的关系,fatherTerrainId应用的是其他的terrinId;比如”成都“fatherTerrainId必定对应着“四川”的terrainId
这个之间的关系想必大家都能够明白。所以就此打住。
最关键的一步就是如果把Terrain构造成一个 StrutsTreeNode :
最理想的方式就是让他们都同时实现一个接口:
public interface ITreeNode {
/**
* 转换对象为树结点
* @return StrutsTreeNode
*/
public StrutsTreeNode toTreeNode();
}
在Terrain里
public StrutsTreeNode toTreeNode() {
StrutsTreeNode treenode = new StrutsTreeNode();
treenode.setId((int)getTerrainId());
treenode.setParentId((int) getFatherTerrainId());
treenode.setName(getTerrainName());
return treenode;
}
在StrutsTreeNode 里
public StrutsTreeNode toTreeNode() {
return this;
}
现在也不过只得到了Id,parent,Name;还没有的获得childrens这个列表啊。这个嘛就要单独获得了哟。这个应该不难吧。
而在Action中必须定义一个 StrutsTreeNode root对象,在获得root钱取得他的childrens的对象列表。这样传到页面
实列下载:
http://cbywxy.iteye.com/admin/blogs/309511
分享到:
相关推荐
struts2 树形菜单实现, 三种方法。
struts实现java树形菜单,用dtree实现
Struts+Hibernate+Javascript 实现无限级树形菜单 内含step by step 开发文档 一、说明: 1、开发环境: Eclipse3.2.1+MyEclipse5.1+Tomcat5.5+Microsoft SQL Server 2000 2、主要实现技术:Struts1.2+Hibernate...
自己动手做的一个树形菜单demo,对数据库中不同层次的节点进行分类,实现起来和简单,只需要一个servlet或者struts action,然后再页面使用dtree
本代码可以实现无限级树形菜单,可以随着右边内容变化左边菜单自动收缩
基于struts hibernate 实现的无限级树形菜单,能够完成菜单的动态显示、添加、修改、删除。
Struts+Hibernate+Javascript 实现人无限级分类树形菜单,从MSSQL读出数据,支持N级,有多少级你就可以添多少级,示例图如上。主要是用到了Struts+Hibernate+JSTL1.1和自定义标签,树形菜单节点用 JavaScript控制...
jsp struts hibernate JavaScript实现的无限级树形菜单实例,开发环境: Eclipse3.2.1 MyEclipse5.1 Tomcat5.5 Microsoft SQL Server 2000,页面的树形菜单的节点用 JavaScript进行控制 数据库中的商品类别表...
NULL 博文链接:https://rody.iteye.com/blog/540514
struts hibernate树形菜单,只是简单的实现树形菜单,有一种业务逻辑没有考虑,就是当类别目录下同时拥有子目录和具体商品的时候只会显示子目录,而具体商品没显示,只需在标签处理类RecursionTag.java中的...
包含struts+hibernate树形菜单、Treeview、树形菜单Ajax实现、树形菜单显示集锦、用TreeView加VS做动态树形菜单(带节点互斥)
eclipse+struts+hibernate树形菜单
Struts2+Spring+Hibernate集成+Dwr做Ajax 制作的树形菜单 代码层次结构清晰 一看就懂
1用TreeView加VS做动态树形菜单(带节点互斥).rar 2展开收缩带效果的演示 3.net的树形菜单 4AJAX实现的树形菜单 5二级树形菜单示例:CSS+TreeMenu.htm<br>6Treeview演示及使用指南 7struts+...
使用extjs+ibatis+spring+struts开发的权限系统 数据库mysql 数据库文件在开发文档目录下 动态树形菜单的加载 ,用户角色权限菜单的维护 jar文件删了一些,需要用的自己加包
1.extjs 的简单增删改。 2.后台使用struts2实现 3.左边是树形菜单。
采用Struts2.0和ExtJS技术,实现动态树形菜单实例。
Struts2 Spring3.0 Hibernate3.3 全注解配置,避免了大量业务类在Spring文件的配置,整合了DWR3.0,displayTag 物理分页技术的实现。树形菜单。 另外数据库,在下一个资源;由于20MB的限制。 有问题的话留言。
Struts+Hibernate+Javascript 实现无限级树形菜单
使用STRUTS架构,可以实现树形菜单,多页查询数据