- 浏览: 188998 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (153)
- 小技巧 (14)
- spring (3)
- struts2 (20)
- hibernate (0)
- java api (2)
- java se (8)
- jsp/servlet (4)
- oracle (0)
- mysql (1)
- ms sqlserver (1)
- js (30)
- jquery (8)
- ajax (2)
- .net (1)
- 软件 (1)
- j2ee (25)
- 网址收藏 (3)
- web综合 (9)
- web打印控件 (3)
- fckeditor (2)
- Groovy (1)
- PHP (5)
- 项目管理 (1)
- SEO (1)
- PostgreSQL (5)
- CKeditor (1)
- Fusion chart (1)
- 网页播放器 (1)
- 曾遇bug (3)
- java日志 (1)
- linux/Unix/CentOs (5)
- VBA (1)
- C# (0)
- 日期控件 (1)
- tomcat (2)
- cookies (1)
- java7 (1)
- JAVA文件操作 (2)
- hibernate;ehcache (2)
- 缓存 (1)
- dd (0)
- DB (1)
- android (2)
最新评论
-
flyingbin:
沙发,不过从头到尾没怎么看懂~
Windows密码本地破解通用方法 -
jfeimao:
credentialsToPrincipalResolvers ...
CAS(单点登陆)---总结一 -
haige18:
这两张图片引用的是网易的地址,现在资源有可能被删除了,所以就显 ...
Struts2中的Value Stack/Stack Context -
fengzhisha0914:
我的图片也不显示了..为何...
Struts2中的Value Stack/Stack Context -
greatwqs:
java.lang.IllegalStateException ...
java.lang.IllegalStateException:Cannot forward after response has been committed
1.首先写两个工具类:TreeData.java 和 TreeUtil.java
TreeData.java
package com.zjh.shopping.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TreeData {
public static Map<Integer, TreeData> catMap = new HashMap<Integer, TreeData>();
public static TreeData getById(int id) {
return catMap.get(id);
}
private int id;
private String name;
private List<TreeData> children;
private boolean toggle;
public TreeData(int id, String name, TreeData... children) {
this.id = id;
this.name = name;
this.children = new ArrayList<TreeData>();
for (TreeData child : children) {
this.children.add(child);
}
catMap.put(id, this);
}
public TreeData(){}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<TreeData> getChildren() {
return children;
}
public void setChildren(List<TreeData> children) {
this.children = children;
}
public void toggle() {
toggle = !toggle;
}
public boolean isToggle() {
return toggle;
}
}
TreeUtil.java
package com.zjh.shopping.util;
import java.util.ArrayList;
import java.util.List;
import com.zjh.shopping.dao.TreeBaseDao;
public class TreeUtil {
List<Integer> childrenId;
public TreeData createTreeData(int parentId,TreeBaseDao treeBaseDao){
TreeData treeData = new TreeData();
treeData.setId(parentId);
treeData.setName(treeBaseDao.getObjectName(parentId));
List<TreeData> children = new ArrayList<TreeData>();
childrenId = treeBaseDao.getChildrenId(parentId);
if(childrenId!=null){
for(int id :childrenId){
TreeData c1 = createTreeData(id,treeBaseDao);
children.add(c1);
}
treeData.setChildren(children);
TreeData.catMap.put(parentId, treeData);
return treeData;
}
else
TreeData.catMap.put(parentId, treeData);
return treeData;
}
}
2.写dao和它的实现类:
package com.zjh.shopping.dao;
import java.util.List;
public interface TreeBaseDao {
public List<Integer> getChildrenId(int parentId);
public String getObjectName(int id);
}
package com.zjh.shopping.dao;
import com.zjh.shopping.bean.Category;
public interface CategoryDao extends BasicDao<Category>,TreeBaseDao{
public int getMaxCnoByPid(int pid);
public int getCnobyId(int id);
}
package com.zjh.shopping.dao.impl;
import java.util.List;
import java.util.Map;
import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.zjh.shopping.bean.Category;
import com.zjh.shopping.dao.CategoryDao;
public class CategoryDaoImpl extends HibernateDaoSupport implements CategoryDao {
public List<Integer> getChildrenId(int parentId) {
List<Integer> list = null;
String hql = "select id from Category";
if(parentId==0){
hql += " where pid is null";
}else{
hql += " where pid ="+parentId;
}
list = getHibernateTemplate().find(hql);
return list;
}
public String getObjectName(int id) {
String name = "";
if(id==0){
name = "所有类别";
}else{
name = getEntity(id).getName();
}
return name;
}
}
3.写action
package com.zjh.shopping.action;
import com.opensymphony.xwork2.ActionSupport;
import com.zjh.shopping.dao.CategoryDao;
import com.zjh.shopping.util.TreeData;
import com.zjh.shopping.util.TreeUtil;
public class ShowCategoryDynamicTreeAction extends ActionSupport {
private CategoryDao categoryDao;
public CategoryDao getCategoryDao() {
return categoryDao;
}
public void setCategoryDao(CategoryDao categoryDao) {
this.categoryDao = categoryDao;
}
public TreeData getTreeRootNode() {
TreeUtil treeUtil = new TreeUtil();//call a tree util
treeUtil.createTreeData(0,categoryDao);//input a corresponding dao
System.out.println("TreeData.getById(1) ........."+TreeData.getById(0).getName());
return TreeData.getById(0);
}
}
4.显示层页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="expires" content="Wed, 23 Aug 2006 12:40:27 UTC" />
<title>类别树形列表</title>
<link href="css/Main.css" type="text/css" rel=stylesheet>
<sx:head />
</head>
<body>
<script language="javaScript" type="text/javascript">
//dojo tree 加载页面后一次性展开树所有节点
dojo.addOnLoad( function() {
expandObj(dojo.widget.byId('categoryTreeId'));//为下面标签的ID
});
function expandObj(obj) {
if (obj) {
if (obj.children) {
for ( var i = 0; i < obj.children.length; i++) {
var childObj = obj.children[i];
if (childObj) {
try {
childObj.expand();
} catch (e) {
}
if (childObj.children) {
expandObj(childObj);
}
}
}
}
}
}
//点击树的节点时候触发的事件
dojo.event.topic.subscribe("treeSelected", function treeNodeSelected(node) {
dojo.io.bind( {
url :"<s:url value='showCategoryDynamicTree.action'/>",
load : function(type, data, evt) {
//var divDisplay = dojo.byId("displayId");
if (node.node.isFolder == false) {
//alert("12");
var cNode = document.getElementByIdx("categoryName");
cNode.value = node.node.title;
// cNode.value = node.node.widgetId;
window.parent.fillStaff(rtnValue);
}
},
mimeType :"text/Html"
});
});
</script>
<input type="text" id="categoryName" readonly="readonly">
<div>
<sx:tree id="categoryTreeId" rootNode="%{treeRootNode}"
childCollectionProperty="children" nodeIdProperty="id"
nodeTitleProperty="name" treeSelectedTopic="treeSelected">
</sx:tree>
</div>
<div id="displayId" style="display: none;">
Please click on any of the tree nodes.
</div>
</body>
</html>
5.配置文件
<action name="showCategoryDynamicTree" class="showCategoryDynamicTreeAction">
<result>/WEB-INF/category/categoryTreeDOJO.jsp</result>
</action>
6.数据库
7.显示结果
发表评论
-
简述Struts2 Convention零配置
2012-07-05 13:24 797从struts2.1开始,struts2不再推荐使用Cod ... -
org.apache.catalina.connector.ClientAbortException
2012-04-27 11:37 10523当我们用Servlet导出图片,或用JSP导出excel时,会 ... -
jsp与Struts2有关跳转兼容性问题的解决方案
2011-03-23 13:22 975最近项目中遇到一个问题: 浏览器地址栏输入域名进入目标网页 ... -
spring+struts+hibernate分页实例
2010-11-22 10:58 848http://ajava.org/code/ssh/16733 ... -
在J2EE系统中应用OSCache 带附件jar包等
2010-10-30 18:51 766文章摘要 Cache是一种用于提高系统响应速度、 ... -
OSCache使用介紹
2010-10-30 18:47 833OSCache使用介紹 一.OSCach ... -
Struts2中的Value Stack/Stack Context
2010-10-30 14:39 2050Value stack栈中的值: 每一个动作在执行相应方 ... -
Log4j使用总结
2010-10-29 11:03 618一、介绍 Log4j是Apache的 ... -
struts2.1.8 hibernate3.3.2 spring2.5 整合需要哪些jar包
2010-10-28 16:07 881struts2 commons-logging-1.0. ... -
URLRewriter实现伪静态
2010-10-27 21:53 1192URLREwriter组件 下载地址:http://www. ... -
生成静态页面
2010-10-27 21:50 920常见的分类信息首页, ... -
struts2 文件上传
2010-10-27 21:43 909实现原理 Struts 2是通过Commons FileUp ... -
strut2 多文件上传
2010-10-27 21:35 883参照上一篇博文《strut2 文件上传》,多文件上传只需要将属 ... -
struts2.1 datetimepicker日期控件的使用
2010-10-27 21:33 946官方参考文档:http://str ... -
struts2 配置json
2010-10-27 21:26 897一、导入所需包,包括Struts2所需的各jar包,再导入st ... -
基于Struts 2 Ajax实现的Login应用
2010-10-27 12:58 835Struts 2内嵌了Dojo工具包,实现对Ajax的支持。下 ... -
史上最详细的struts 2 标签整理
2010-10-27 12:53 869a a标签创建一个HTML超链接,等价于HTML ... -
Struts2.1 标签详细说明
2010-10-27 12:40 1060Struts 2.1 Tags 最近学习 Struts ... -
struts2 tree 标签
2010-10-27 10:15 2612struts2里面使用 tree标签 需要导入包:struts ...
相关推荐
在Struts2与Dojo整合时,通常会使用Struts2的dojo-plugin来处理JSON数据,以实现Dojo组件与后台的通信。 然后,iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,使得开发者能够更加灵活地处理数据库查询。...
8. **拖放功能**:通过Dojo的dnd模块,可以实现树节点的拖放排序或者移动,这对于管理层次结构数据非常有用。 在实际项目中,你可能需要结合这些实例进行组合,以满足复杂的需求。通过深入理解Struts2的Action、...
总之,Struts2动态树的实现涉及到了数据库操作、MVC设计模式的应用、前端交互逻辑和性能优化等多个方面,它是Java Web开发中一种常见的数据呈现形式,尤其适用于展示层级关系清晰的数据结构。通过熟练掌握这些技术,...
在给定的资源中,"Struts2动态树.txt"可能包含了实现动态树的代码示例和详细步骤,而"Test"可能是一个测试类或者包含测试用例的文件。 以下是关于Struts2.0动态树的知识点: 1. **配置Action**: 在Struts2中,你...
而在这里,提到了Struts2实现的树形结构并不逊色于dtree,这可能是因为Struts2结合其dojo插件或其他类似插件,能够生成具有类似交互性和视觉效果的树形视图。 "struts2-dojo-plugin-2.1.0.jar"这个文件是Struts2 ...
Struts2作为一款流行的Java Web应用框架,结合JavaScript库Dojo(通常简称为Dojo或者Dojo Toolkit),可以方便地实现这种树形结构的动态展示。本文将基于提供的文件信息,详细介绍如何利用Struts2和Dojo来实现动态树...
"struts2源码+java树"这部分可能涉及到查看Struts2框架的源代码,理解其工作原理,以及如何在Java代码中实现无限递归树的构建和渲染。 在实际项目中,"javaTree"可能是一个包含实现无限递归树所需类和方法的Java...
Struts2的标签库不仅限于核心库,还可以通过插件机制添加第三方标签库,如Struts2-dojo-plugin、Struts2-jquery-plugin等,这些插件提供了丰富的UI组件,如日期选择器、下拉树等。 总结,Struts2标签库是其强大功能...
根据提供的文件信息,本文将详细解释如何通过使用Struts2框架来实现静态及动态树形菜单的方法,并且会深入分析代码中的关键元素和技术要点。 ### 一、项目环境配置 在构建一个支持树形菜单的Web应用之前,首先需要...
4. **struts2-dojo-plugin.jar**:这个插件提供了与Dojo JavaScript库的集成,帮助开发者创建富客户端的Web应用,提供诸如日期选择器、下拉树、滑块等交互控件。 5. **struts2-spring-plugin.jar**:如果项目使用...
本文将深入介绍Struts2 Tree标签的两种形式:静态树与动态树,并通过具体实例进行讲解。 #### 二、静态树 静态树是在页面加载时即构建好的树形结构,适用于数据量较小且固定的场景。其创建过程较为简单,主要包括...
这个"dojo中文++资料"包含的是针对Dojo框架的中文教程和实践案例,特别强调了与Struts的整合、动态树结构的构建以及绘图功能的实现,这些都是在Web应用开发中常见的需求。 **Dojo框架** Dojo框架是一套全面的前端...
本文主要探讨的是如何在Struts2中正确配置和使用AJAX,特别是通过Dojo库以及标签来实现动态树形结构。 在Struts2的showcase中,标签有两个示例,一个是静态树,另一个是动态树。静态树是在编写JSP代码时通过标签...
Struts2作为MVC模式的一种实现,提供了一系列优点。例如,模块化设计简化项目管理,自动处理客户端请求(包括参数转换、数据封装、数据验证、国际化显示和文件上传),并通过Dojo库支持AJAX,使用OGNL(Object-...
在本项目中,我们将探讨如何使用Ajax、Struts2框架以及Dojo库来动态地从数据库中获取数据并生成树型菜单。这个功能常见于网站的导航系统,允许用户以层级结构浏览和操作数据。 首先,`Ajax`(Asynchronous ...
该项目是一个基于Struts2、Spring、JPA和Ajax技术实现的网上购物系统。这个系统的主要目的是为了演示如何在实际开发中整合这些技术,提供一个功能完善的电商应用框架。以下是对这些关键技术点的详细解释: **Struts...
Struts 2有一个丰富的插件生态系统,比如Struts2-dojo-plugin用于集成Dojo库,Struts2-convention-plugin简化了配置,还有其他如REST、JSON等插件,极大地丰富了框架的功能。 通过深入学习和实践"Java高级框架开发...
6. **插件支持**:Struts2 具有丰富的插件库,如 Struts2 jQuery Plugin 和 Struts2 Dojo Plugin,可快速构建用户界面。 在个人学习过程中,你可以从以下几个方面入手: 1. 学习 Spring 的基本概念和核心组件,理解...
Struts2.0通过集成JSON插件和Dojo库,实现了与AJAX技术的深度结合。开发者可以利用、、等标签,轻松实现异步请求、自动补全等功能,提升用户体验。 十四、Struts2.0的高级主题和自定义功能 Struts2.0不仅在基础...
### Struts2 Tree标签属性详解 #### 一、引言 在Struts2框架中,Tree标签是一个非常有用的UI...正确理解和使用这些属性可以帮助开发者更高效地实现树形结构的展示,同时提高用户体验。希望本文的内容对你有所帮助。