`
andylue2008
  • 浏览: 34967 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2中用ext框架显示树(tree)形菜单

阅读更多

 1、首先导入 ext3框架。

 2、创建 Syllabus类,列出在教学大纲案例中所需要的字段,同时也是在节点中显示的内容所需要的字段。

 

package com.erong.struts.json.domain;

public class Syllabus {
	private String id;
	private String text;
	private String nodeParentId;
	private int nodeLevel;
	private String nodeCode;
	private boolean leaf;
}

3、写一个SyllabusService类,利用类中的getChildrens()发放,取得数据库里的信息,在节点处显示。

 

 

package com.erong.struts.json.service;

import java.util.List;
import org.hibernate.classic.Session;
import com.erong.struts.json.domain.Syllabus;
import com.erong.struts.json.util.HibernateUtil;

public class SyllabusService {
	public List<Syllabus> getChildrens(String nodeId) {
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		Syllabus syllabus = (Syllabus) session.load(Syllabus.class, nodeId);

		return session.createQuery(
				"from Syllabus where subString (nodeCode,1,2*"
						+ syllabus.getNodeLevel() + ")='"
						+ syllabus.getNodeCode() + "'and nodeLevel="
						+ (syllabus.getNodeLevel() + 1)
						+ " order by nodeCode asc ").list();

	}
}
 

 

4、取得数据库信息要利用hibernate,
 当然要配置相应的信息:hibernate.cfg.xml和DomainMapping.hbm.xml两个xml文件。

<hibernate-mapping package="com.erong.struts.json.domain">
  <class name="Syllabus" table="syllabus">
  	<id name="id" column="syllabus_id">
  		<generator class="uuid.hex" />
  	</id>
  	<property name="text" column="syllabus_name"/>
  	<property name="nodeParentId" column="parent_id"/>
  	<property name="nodeLevel" column="syllabus_depth"/>
  	<property name="nodeCode" column="syllabus_code"/>
	<property name="leaf" column="is_leaf" type="yes_no" />
  </class>
</hibernate-mapping>
 

 

5、要利用struts来控制页面,首先要创建action。用类JsonAction中的execute()方法,
调用SyllabusService中的getChildrens()方法,获取数据信息。当然此处也要在action中配置此信息。

 

package com.erong.struts.json.action;
import java.util.List;
import com.erong.struts.json.domain.Syllabus;
import com.erong.struts.json.service.SyllabusService;
import com.opensymphony.xwork2.ActionSupport;
public class JsonAction extends ActionSupport {

	private String node;
	private List<Syllabus> nodes;

	public String getNode() {
		return node;
	}

	public void setNode(String node) {
		this.node = node;
	}

	public List<Syllabus> getNodes() {
		return nodes;
	}

	public void setNodes(List<Syllabus> nodes) {
		this.nodes = nodes;
	}

	public String execute() {
		
		SyllabusService ss = new SyllabusService();
		this.nodes = ss.getChildrens(node);
		System.out.println("select node id:" + node);
		System.out.println("元素个数:" + this.nodes.size());
		return SUCCESS;
	}

}
 

 

6、自定义结果的显示。创建MyJsonResult类来设置结果集的效果。

package com.erong.struts.json.util;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONSerializer;
import org.apache.struts2.dispatcher.StrutsResultSupport;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.util.ValueStack;
public class MyJsonResult extends StrutsResultSupport {
	protected void doExecute(String finalLocation, ActionInvocation invocation)
			throws Exception {

		HttpServletResponse response = (HttpServletResponse) invocation
				.getInvocationContext().get(HTTP_RESPONSE);

		ValueStack vs = invocation.getStack();
		List list = (List) vs.findValue("nodes");
		System.out.println("自定义结果获得的元素个数:" + list.size());
		JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(list);
		System.out.println(jsonArray.toString());
		response.setCharacterEncoding("utf-8");
		response.getWriter().print(jsonArray.toString());
	}
}
 

 

7、最后就是js显示页面,创建index.html,在html页面中调用ext中的js,美化一下美观。
同时也要写js方法,来获取数据信息。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>New Web Project</title>
		<link rel="stylesheet" type="text/css" href="ext3/resources/css/ext-all.css" />
   		<!-- GC --> <!-- LIBS -->
		<script type="text/javascript" src="ext3/adapter/ext/ext-base.js"></script>    
    	<script type="text/javascript" src="ext3/ext-all.js"></script>
		<script type="text/javascript" src="ext3/src/locale/ext-lang-zh_CN.js"></script>
		<script language="JavaScript" type="text/javascript">
			var tree;			
			function initTree() {
				var tree = new Ext.tree.TreePanel({
					loader: new Ext.tree.TreeLoader({dataUrl: '/Struts2Json/JsonDemo.action'})
				});
				
				var rootNode = new Ext.tree.AsyncTreeNode({text:'教学大纲', id:'44417711639f42edb25798368ed11b06'});
				tree.setRootNode(rootNode);
				
				return tree;
			}
			
			Ext.onReady(function() {
				Ext.BLANK_IMAGE_URL = 'ext3/resources/images/default/s.gif';
				//初始化Ext状态管理器,此类可返回用户在Cookie中的操作状态
    			Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
				tree = initTree();
		
				var viewport = new Ext.Viewport({
					layout: "border",
					items: [
					{region: "north", height: 80, split: false},
					{region: "west", layout: "fit", width:300, minWidth: 180, title:"导航树", collapsible: true, split: true, items:[tree]},
					{region: "center", layout: "fit", items:[{}]}
					]
				});
						
				tree.expandAll();
			})
		</script>
    </head>
    <body>  
  
    </body>
</html>

 8、表结构在下面的Sysllabus.sql文件中。

  • 大小: 13.8 KB
分享到:
评论
1 楼 oyj86 2011-10-21  
能发下源码给我么,email:247427748@qq.com,谢谢

相关推荐

    Struts 2项目 ajax动态生成树形菜单

    在本项目中,我们探讨的是如何利用Struts2框架和AJAX技术动态地从数据库中获取数据,并生成交互式的树形菜单。树形菜单在Web应用中常见于导航系统,因为它能清晰地展示层次结构,方便用户浏览和操作。 首先,让我们...

    ExtJS4+Accordion+SERVLET/STRUTS2+JSON+Ext.tree.Panel实例

    总结来说,这个实例展示了如何将前端的ExtJS4框架,特别是其Accordion布局和Ext.tree.Panel组件,与Servlet和Struts2后端框架集成,利用JSON进行数据交换,来创建一个动态的、交互性强的Web应用。用户可以通过折叠和...

    jsp树形菜单 dtree tree 树形菜单

    在这个“jsp树形菜单 dtree tree 树形菜单”的项目中,我们将探讨如何利用JSP、dtree库以及可能的Struts框架来创建一个动态的树形菜单。 首先,JSP(JavaServer Pages)是一种基于Java的技术,用于创建动态Web内容...

    Struts2+Ext登录整合完整版

    Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录...

    树形菜单、用JS配合Struts1.2、Spring2。0、Ajax2.0的树形菜单

    在这个项目中,我们看到一个利用JavaScript、Struts1.2、Spring2.0以及Ajax2.0实现的树形菜单系统。这个系统不仅提供菜单展示,还涉及到了角色的添加和修改功能,可以说是一个简单但实用的角色分配系统。 首先,让...

    s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单.rar

    开发者可以使用Freemarker语法定义动态内容,如树形菜单的数据,这些数据由后端Spring或Struts2处理并传递给前端。 然后是“jquery”,这是一个广泛使用的JavaScript库,提供了丰富的API用于操作DOM(文档对象模型...

    struts2+json+ext+tree

    5. 服务器响应JSON数据后,EXT的store会解析数据,填充到TreePanel的模型中,从而更新视图,显示树形结构。 "testJsonLib"可能包含一个简单的示例,演示如何通过Struts2的Action返回JSON数据,EXT的TreePanel接收并...

    struts2与Ext4.0的json交互

    这篇博客文章“Struts2与Ext4.0的json交互”可能会探讨如何在Struts2中配置和使用JSON来与前端的Ext4.0框架进行通信。 首先,我们来看Struts2中的JSON插件。这个插件允许我们在Action类中直接返回JSON对象,无需...

    jstree+JS树形菜单合集

    "树形菜单显示集锦"可能是一系列不同设计风格和功能特性的树形菜单示例,这些示例展示了如何通过JavaScript和CSS自定义树形菜单的外观和交互效果。这为开发者提供了灵感和参考,以便他们在自己的项目中实现独特且...

    struts2+ext实例

    struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例

    struts2框架 spring框架Ext框架 Mybatis框架 mysql 增删改查

    Struts2、Spring、DWR、Ext和Mybatis是Java Web开发中常用的一系列框架,它们各自在应用程序的层面上发挥着重要的作用。Struts2是MVC(模型-视图-控制器)架构模式的一个实现,它提供了强大的动作调度、拦截器、结果...

    struts与ext集成

    Struts2和EXT的集成是Java Web开发中的一个重要主题,特别是在构建用户界面时追求美观、交互性强的应用。这篇教程将深入探讨如何将这两者结合,为开发者提供一个更高效的开发环境。 **Struts2框架** Struts2是...

    java+Struts+Hibernate实现的无限级树菜单

    5. **显示树形菜单**: 前端通常使用JavaScript库(如jQuery、Bootstrap Treeview、AngularJS等)来呈现树形结构。这些库提供了方便的API来动态加载和操作树节点。在本项目中,可能会利用JSP页面结合JavaScript来...

    EXT 分页,树形结构案列

    EXT 分页与树形结构是EXT JavaScript框架中的两种核心特性,它们在开发高效、互动性强的Web应用程序时扮演着重要角色。EXT是一个强大的客户端JavaScript库,用于构建富互联网应用程序(RIA)。在这里,我们将深入...

    oa.rar_ext_ext java oa_ext oa_ext tree_java ext tree

    描述中提到的“ext tree 与ssh2的结合,主要演示ext在ssh2中的使用”为我们提供了关键信息:这是一个关于如何在SSH2框架中集成EXT库,特别是其树形视图(Tree)功能的示例。 首先,我们需要了解SSH2(Struts、...

    struts2验证框架

    Struts2 验证框架详解 Struts2 验证框架是基于 Java 语言的 Web 应用程序框架,提供了一个强大的验证机制,以确保用户输入的数据满足业务逻辑的要求。在 Struts2 中,验证机制是通过 validator 来实现的,该机制...

    strut2树形菜单

    本文详细介绍了在Struts2框架中实现树形菜单的三种方法:直接使用Struts2内置的`&lt;s:tree&gt;`标签、自定义节点类以及从数据库获取数据并转换为树形结构。每种方法都有其适用场景,开发者可以根据具体需求选择合适的方法...

    struts简单示例+js树形菜单

    这个项目旨在帮助开发者理解如何在Struts框架下结合JavaScript实现交互式树形菜单,提升用户体验,同时也展示了MVC模式在实际开发中的应用。学习这个示例,可以帮助初学者快速掌握Struts框架和前端动态效果的结合,...

    struts+hibernate树形菜单

    当我们需要在Web应用中实现树形菜单时,通常会结合这两个框架来完成。 树形菜单是一种常见的用户界面元素,它以层级结构展示数据,例如网站导航、文件系统或者组织架构。在Web应用中,用户可以通过点击展开或折叠...

Global site tag (gtag.js) - Google Analytics