最近的一个项目。用到了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框架和AJAX技术动态地从数据库中获取数据,并生成交互式的树形菜单。树形菜单在Web应用中常见于导航系统,因为它能清晰地展示层次结构,方便用户浏览和操作。 首先,让我们...
在这个项目中,我们看到一个利用JavaScript、Struts1.2、Spring2.0以及Ajax2.0实现的树形菜单系统。这个系统不仅提供菜单展示,还涉及到了角色的添加和修改功能,可以说是一个简单但实用的角色分配系统。 首先,让...
在本文中,我们将探讨如何使用Struts和JavaScript的dTree库来实现一个树形菜单。树形菜单在各种Web应用中非常常见,如权限管理、导航系统等,因为它提供了层次清晰、易于交互的界面。 首先,我们需要了解dTree的...
开发者可以使用Freemarker语法定义动态内容,如树形菜单的数据,这些数据由后端Spring或Struts2处理并传递给前端。 然后是“jquery”,这是一个广泛使用的JavaScript库,提供了丰富的API用于操作DOM(文档对象模型...
Struts+Hibernate+Javascript 实现无限级树形菜单 内含step by step 开发文档 一、说明: 1、开发环境: Eclipse3.2.1+MyEclipse5.1+Tomcat5.5+Microsoft SQL Server 2000 2、主要实现技术:Struts1.2+Hibernate...
6. **文档`Struts+hibernate树形菜单.doc`**: 这个文档很可能包含了项目的详细步骤、配置说明、代码示例和使用指南。通过阅读这份文档,可以更深入地理解项目的实现过程和具体细节。 7. **资源文件`Tree`**: ...
开发者通过编写源代码实现了动态加载树形菜单的功能,并且在处理大量数据时引入了分页机制,提高了应用的性能和用户体验。如果你希望深入了解和实践这些技术,可以通过提供的源码和数据库文件进行学习和调试。
在这个“jsp树形菜单 dtree tree 树形菜单”的项目中,我们将探讨如何利用JSP、dtree库以及可能的Struts框架来创建一个动态的树形菜单。 首先,JSP(JavaServer Pages)是一种基于Java的技术,用于创建动态Web内容...
### Struts2树形菜单实现方法详解 #### 一、背景与概述 在Web应用程序开发过程中,树形菜单是常用的一种导航方式,它能够清晰地展示层级关系,并为用户提供直观的操作体验。Struts2框架提供了丰富的标签库来帮助...
实现“Struts+Hibernate树形菜单”的主要步骤如下: 1. **设计数据模型**:首先,我们需要定义一个表示菜单的实体类,例如`Menu`,包含属性如ID、名称、父菜单ID等。利用Hibernate的注解或XML配置,将这个类映射到...
3. **动态加载树形菜单实现原理**: - **数据结构**:菜单数据通常以树状结构存储,在后台数据库中,每个菜单项都有对应的父节点ID。 - **数据获取**:通过Struts处理服务器端逻辑,从数据库中获取树形结构的数据...
3. **JS树形菜单实现**: - **JavaScript库**:可能是jQuery或者其他轻量级库,用于DOM操作和事件处理。 - **HTML结构**:创建基本的HTML元素,如`<ul>`和`<li>`,作为树形结构的基础。 - **CSS样式**:定义树形...
树形结构在很多场景下都是非常有用的,比如数据展示、导航菜单等,因此掌握Struts2中如何构建和操作树形结构是提升开发效率的关键。 首先,理解树形结构的基本概念是必要的。树形结构是一种数据结构,它由节点(或...
这个“struts hibernate dwr无限级树形菜单”项目是将这些技术结合在一起,以实现一个动态、可扩展的菜单系统。 Struts 是一个MVC(Model-View-Controller)框架,它提供了结构化的控制层来处理用户请求,管理业务...
5. **数据交互**:为了实现树形菜单的动态加载,需要在后台(可能是Struts2 Action)处理请求,获取树的数据结构,然后以JSON格式返回。前端JavaScript代码解析这个JSON数据,构建DTree的节点。 6. **Ajax技术**:...
本篇将详细介绍“特别适合后台的树形菜单”的设计原理、实现方式以及与JSP、HTML和Struts框架的结合应用。 首先,树形菜单的设计理念是基于人类对层次结构的认知,通过节点(通常以图标加文字的形式)和连接线来...
在描述中提到的树形菜单,很可能是在Struts2的Action中处理数据,并返回到前端。 **Spring** 是一个全面的后端应用管理框架,它不仅提供了依赖注入(DI)和面向切面编程(AOP)的能力,还包含了事务管理、数据源...
根据提供的文件信息,本文将详细解释如何通过使用Struts2框架来实现静态及动态树形菜单的方法,并且会深入分析代码中的关键元素和技术要点。 ### 一、项目环境配置 在构建一个支持树形菜单的Web应用之前,首先需要...
这里的“纯Struts”可能意味着这个树形菜单的实现完全依赖于Struts框架,没有使用其他辅助库。在Struts中,动作(Action)处理用户的请求,模型(Model)负责业务逻辑,视图(View)呈现结果。开发者可能需要创建...
"CodeFans.net.url"看起来是一个链接,可能指向了提供这些资源的网站或相关教程,对于深入理解和使用这些树形菜单实现方法可能有帮助。 "js"文件可能是一个JavaScript代码文件,可能包含了树形菜单的实现代码,或者...