Ext JS4序列教程之二 :异步加载Accordion和Tree菜单
Ext JS4序列教程之二:异步加载accordion和Tree菜单
1、序言
EXT JS4序列教程主要讲解WEB开发中一些常用的组件,例如Tree,Grid,Combobox,form 等,EXT JS4的出现为广大程序员带来了福音,我们可以用较少的代码,实现很炫丽的效果,我在很多项目的架构中都使用EXT JS作为核心的WEB框架,配合jQuery框架,大家很容易实现一个用户体验很不错的软件系统(我们称之为高大上,哈哈哈)。EXT JS自推出以来,其性能就饱受开发的砰击,在EXT JS4以前的版本,性能确实不是很好,不过比起jQuery Easy UI,那还是要好很多的,从EXT JS4.2以后的版本开始,性能还是很不错的,代码也比较精简,结构清晰,纯面像对象的语法,BUG也较EXT JS4.1少了很多,相对比较稳定,EXT JS4推出了MVC模式的设计风格,使得代码结构更加清晰,可读性更好,非常类似于使用JAVA SWING和C# WinForm开发,但如果没有接触过AJAX框架的程序员,第一次使用EXT JS4会碰到各种各样的问题,本教程教从零开始讲解EXT JS4,从客户端到服务器都有完整的代码,服务端使用SSH框架,用注解方式进行开发,抛弃了繁锁的配置文件(我本人相当讨厌配置文件,在我设计的架构中,配置文件几乎为零)。关于源码,由于Google无法访问(IT业的一大悲剧),大家可以到CSDN上下载。
本文从实际应用出发,讲解与WEB系统开发息息相关的实例,EXT JS功能很丰富,由有时间的原因,我不会所有的功能都讲到(我都是利用业余时间写教程,目前在一家公司担任高级架构师,工作很忙,我写教程主要是在互联网上和大家一起分享自己的开发经验),大家按照本套系列教程来逐步开发代码,可以实现一个功能比较完整的WEB系统。本教程后端使用的架构为Struts2+Hibernate4+Spring4,后续我将会逐一介绍SSH架构的搭建。关于https://www.360docs.net/doc/c63646296.html,的教程,会在后续推出。
作者:山人
2014/11/14
1、异步accordion和Tree菜单
好了,各位观众,前面我们讲了layout布局中的border布局,本章我要介绍一个另大家兴奋的东西,那就是异步accordion和Tree菜单,这类菜单在实际的项目中经常会用到,accordion菜单作为功能模块菜单,Tree菜单作为功能点菜单,由其是规模较大的项目,应用较为普遍。我在网上搜索发现类似的例子有很多,但是很少有异步加载Tree的例子,很多都是一次性加载,这不仅会消耗多余的资源,造成服务端和客户端的查询、显示效率下降,而且不利于权限控制,例如Spring-acegi安全框架。如果是政府类的安全性和保密性要求较高的应用系统,是不适用的,前段时间闹的沸沸扬扬的香港占中事件,国外黑客宣布要入侵中国的电子政务系统,以支持香港占中,这对我国的电子政务系统的安全性提出了挑战,一个很小的漏网都可能会成为黑客入侵的目标,造成较大的损失。所以,菜单的异步加载和权限控制是很有必要的,因为只有异常加载菜单才能较好的与安全框架集成,如果把权限控制放在客户端脚本里,黑客就可以通过修改脚本执行顺序、跨站脚本攻击等技术攻击我们的系统,得到系统管理员的权限。说了这么多题外话,我们先来看一下效果:
怎么样,高大上吧?其实高大上就是这么来的。当然,很多按钮位置错乱、节点错
乱、半天不响应的UI也是这么来的,我们称之为“土肥圆”,不知道你有没有见过,反正我是见过,最让人佩服的是,这样的系统还被客户使劲的夸,我们只能彻底拜服在这位项目经理的脚下。由此可知,做好一个系统,不是你的功能做的有多强就可以的,关键还是要维护好客户关系的。以上界面具体实现步骤如下:
注意,大家可以把EXT JS类库定义在一个JSP中,当其他页面要引用的时候,可以使用JSP的包含动作将类库引入,这样也符合代码重用的目的,同时要把ext-lang-zh_CN.js 这个文件引进来,这个是Ext JS的语言文件,用来汉化EXT JS。
接下来讲解几个EXT JS的函数,第一个函数EXT的AJAX请求函数,这个函数用来发送异步请求,向服务器请求数据,服务器收到请求后将数据返回给客户端,由EXT JS进行处理,函数如下:
第二个函数,哦,对了,这里我们不能称之为函数,应该称之为模型(Model),在JAVA 和C#里,我们经常要定义Model,用来定义和存储对象的数据,EXT JS的模型和各种服务端编程语言是一样的,只是写法不一样,EXT JS的模型用来存储JSON格式的数据,Model 存储在store里面,store就像一个数据库,里面可以有表,而Model的角色就是表,定义
一个模型是这样的。
第二步:定义一个MODEL
客户端的完整代码如下:
第五步:服务端代码
我们在Struts2的Action中添加两个方法,第一个方法用来加载accordion菜单和Tree 的根菜单所需的数据
第二个方法用来查询Tree菜单下的子菜单
第七步:POJO类
第八步:表结构
第九步:数据库中的数据展示
Menu表中的数据
MenuPanel表中的数据
ASP NET+TreeView树型菜单操作实例(代码调试通过)
https://www.360docs.net/doc/c63646296.html, TreeView树型菜单操作实例(代码调试通过) 本实例完成TreeView树型菜单添加,修改,删除,绑定DropDownList功能,移动功能读者可以自行书写.aspx代码