`
周凡杨
  • 浏览: 235111 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Extjs4.0学习笔记四(Tree应用)

阅读更多

 

                       Extjs4.0 学习笔记四

    继续学习Extjs4.0 菜单tree应用,这次实现的是ExtjsStruts2之间的数据交互。

其中交互的数据格式为json,采用的技术有json-lib,本次数据是在Struts的服务里写死的,实际项目中,菜单列表都是从数据库表里读取的。

Extjs:    用于前台页面展示

Struts:   后台服务层,主要支撑数据的交互、及服务的业务逻辑

Json-lib: 可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档 

一:页面效果


 

子菜单展开后的样式如下所示:


 

 

二:代码

1: 页面代码menu.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>Extjs--Struts例子</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">    

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<link rel="stylesheet" type="text/css" href="ext4/resources/css/ext-all.css" />

    <script type="text/javascript" src="ext4/bootstrap.js"></script>

<script type="text/javascript">

Ext.require([

    'Ext.tree.*',

    'Ext.data.*',

    'Ext.tip.*'

]);

 

Ext.onReady(function() {

    Ext.QuickTips.init();

    

    var store = Ext.create('Ext.data.TreeStore'{

        proxy: {

            type: 'ajax',

            url: 'menu!execute.action'

        },

        root: {

            text: 'ExtJS',

            id: 'src',

            expanded: true

        },

        folderSort: true,

        sorters: [{

            property: 'text',

            direction: 'ASC'

        }]

    });

 

    var tree = Ext.create('Ext.tree.Panel'{

        store: store,

        viewConfig: {

            plugins: {

                ptype: 'treeviewdragdrop'

            }

        },

        renderTo: 'tree-div',

        height: 300,

        width: 250,

        title: 'Files',

        useArrows: true,

        dockedItems: [{

            xtype: 'toolbar',

            items: [{

                text: 'Expand All',

                handler: function(){

                    tree.expandAll();

                }

            }{

                text: 'Collapse All',

                handler: function(){

                    tree.collapseAll();

                }

            }]

        }]

    });

});

 

 

</script>

  </head>

  

  <body>

     <br/><br/>

     <span style="color:red">

       本例子采用的技术有: Extjs4.0 + Struts2 + json-lib

     </span>

     <br/><br/>

    <div id="tree-div"></div>

  </body>

</html>

2: 服务层代码

   2.1 JavaBean   Menu.java

      package cn.com.bean;

      import java.util.List;

      public class Menu {

           private int id;

           private String text;

           private boolean leaf;

           private String cls;

           private List children;

           public int getId() {

               return id;

           }

           public void setId(int id) {

               this.id = id;

           }

           public String getText() {

               return text;

           }

           public void setText(String text) {

               this.text = text;

           }

           public boolean isLeaf() {

               return leaf;

           }

           public void setLeaf(boolean leaf) {

               this.leaf = leaf;

           }

           public String getCls() {

               return cls;

           }

           public void setCls(String cls) {

               this.cls = cls;

           }

           public List getChildren() {

               return children;

           }

           public void setChildren(List children) {

               this.children = children;

           }

     }

2.1 Action   MenuAction.java

     package cn.com.action;

     import java.io.IOException;

     import java.util.ArrayList;

     import java.util.List;

 

     import javax.servlet.http.HttpServletResponse;

 

     import net.sf.json.JSONArray;

 

     import org.apache.struts2.ServletActionContext;

 

     import cn.com.bean.Menu;

 

     public class MenuAction {

 

          private String menuString;

          private List menus;

          public void execute(){

             HttpServletResponse response = ServletActionContext.getResponse();

             response.setCharacterEncoding("utf-8");

 

             menus = new ArrayList();

             Menu benz = new Menu();

             benz.setText("二级菜单目录1");

             benz.setCls("folder");

             benz.setLeaf(false);

             benz.setId(10);

             menus.add(benz);

             List benzList = new ArrayList();

             benz.setChildren(benzList);

             

             //二级菜单目录1的子菜单1

             Menu menu = new Menu();

             menu.setText("子菜单1-1");

             menu.setCls("file");

             menu.setLeaf(true);

             menu.setId(11);

             benzList.add(menu);

 

             //二级菜单目录1的子菜单2

             menu = new Menu();

             menu.setText("子菜单1-2");

             menu.setCls("file");

             menu.setLeaf(true);

             menu.setId(12);

             benzList.add(menu);

             

             Menu bmw = new Menu();

             bmw.setText("二级菜单目录2");

             bmw.setCls("folder");

             bmw.setLeaf(false);

             bmw.setId(20);

             menus.add(bmw);

             List bmwList = new ArrayList();

             bmw.setChildren(bmwList);

 

             //二级菜单目录2的子菜单1

             menu = new Menu();

             menu.setText("子菜单2-1");

             menu.setCls("file");

             menu.setLeaf(true);

             menu.setId(21);

             bmwList.add(menu);

 

             //二级菜单目录2的子菜单1

             menu = new Menu();

             menu.setText("子菜单2-2");

             menu.setCls("file");

             menu.setLeaf(true);

             menu.setId(22);

             bmwList.add(menu);

 

             JSONArray jsonObject = JSONArray.fromObject(menus);

             try{

                  menuString = jsonObject.toString();

             }catch(Exception e){

                  menuString = "ss";

             }

             try {

                  response.getWriter().write(menuString);

             } catch (IOException e) {

                  e.printStackTrace();

             }

             //return "success";

        }

 

        public String getMenuString() {

             return menuString;

        }

 

       public void setMenuString(String menuString) {

             this.menuString = menuString;

        }

    }

    其中web.xml 和 struts.xml代码和一般的项目配置一样。

 

 三 总结

通过本次例子可以学习总结到以下知识点:

1JSon-lib 工具的应用

   通过引入json-libjar 包就可以使用json-lib了,不需要配置其它文件。

   这里引的jar包有

   commons-beanutils-1.7.0.jar

   commons-collections-3.2.jar

   commons-lang.jar

   commons-logging-1.1.jar

   ezmorph-1.0.4.jar

   json-lib-2.2.2-jdk15.jar

 

   核心代码(其中menusJavaBean 对象,转换后的menuString 为一字符串):

   JSONArray jsonObject = JSONArray.fromObject(menus);

   try{

       menuString = jsonObject.toString();

   }catch(Exception e){

       menuString = "ss";

   }

   

   生成的menuString:

[{"children":[{"children":[],"cls":"file","id":11,"leaf":true,"text":"子菜单1-1"},

{"children":[],"cls":"file","id":12,"leaf":true,"text":"子菜单1-2"}],"cls":"folder","id":10,"leaf":false,"text":"二级菜单目录1"},{"children":[{"children":[],"cls":"file","id":21,"leaf":true,"text":"子菜单2-1"},

{"children":[],"cls":"file","id":22,"leaf":true,"text":"子菜单2-2"}],"cls":"folder","id":20,"leaf":false,"text":"二级菜单目录2"}]

 

2Extjs 与后台Action交互的方式:

       proxy: {

            type: 'ajax',

            url: 'menu!execute.action'

        },

通过代理proxy ajax方式 与后台服务交互。这里需要注意的是,而在Ext中的提交数据的过程中,Ext框架用的是都是UTF-8编码,而且通过JSON提交的数据也是UTF-8编码

如果Action中没有加response.setCharacterEncoding("utf-8");则页面中文将是乱码。

 


 

 

 

  • 大小: 12.5 KB
  • 大小: 13.2 KB
  • 大小: 4.5 KB
1
0
分享到:
评论
1 楼 liuzhiqiangmeng 2012-07-31  

相关推荐

    Extjs4.0学习笔记

    Extjs4.0学习笔记,以下是部分介绍: xtjs4,创建Ext组件有了新的方式,就是Ext.create(....),而且可以使用动态加载JS的方式来加快组件的渲染,我们再也不必一次加载已经达到1MB的ext-all.js了,本文介绍如何在EXTJS4...

    ExtJS4.0开发笔记

    ExtJS4.0开发笔记

    Extjs4.0学习笔记大全.pdf

    Extjs4.0学习笔记大全.pdf,供大家学习

    Extjs4.0学习笔记大全

    Extjs4.0学习笔记大全

    EXTJS4.0视频教程配套代码

    第二十讲:extjs4.0的高级组件tree+grid整合案例补充 第二十一讲:extjs4.0的高级组件form上 第二十二讲:extjs4.0的高级组件form中 第二十三讲:extjs4.0的高级组件form下 第二十四讲:extjs4.0的高级组件form...

    Extjs4.0开发笔记

    EXTJS4.0 开发笔记主要探讨了如何利用EXTJS4.0的MVC模式进行Web应用程序的构建,特别是员工管理系统的开发。在MVC模式下,开发过程更具有组织性和可维护性,将模型(Model)、视图(View)和控制器(Controller)...

    EXTjs4.0学习文档

    EXTJS 4.0 学习文档 EXTJS 4.0 是一个面向开发 RIA 的 AJAX 应用,是一个用 JavaScript 写的,主要用于创建前端用户界面,是一个与后台技术无关的前端 AJAX 框架。它能够帮助我们在页面上快速而简单构建各种各样的...

    extjs4.0学习笔记

    EXTJS 是一个强大的JavaScript 库,专用于...EXTJS 4.0的学习涉及到了组件的创建、布局的管理、数据绑定和事件处理等多个方面,理解并熟练掌握这些知识点,能帮助开发者构建出功能强大、用户体验优秀的Web应用程序。

    extJs4.0 开发手册源码

    "Extjs4.0 Web应用开发指南(第二版)-源代码"这本书的源码部分,不仅提供了EXTJS4.0的源代码,还提供了书中实例的实现,这对于学习EXTJS4.0的实际开发流程非常有帮助。通过对照书中的讲解和源码,开发者可以更深入地...

    ExtJs4.0 手册中文版

    在《ExtJs4.0 手册中文版》中,你可以找到关于ExtJS 4.0的全面介绍和详细指南。这个手册涵盖了框架的基础知识,如MVC架构、组件系统、数据绑定以及事件处理机制。此外,它还深入讲解了如何使用各种组件,如GridPanel...

    Extjs 4.0中文版API

    Extjs 4.0中文版API

    extjs4.0帮助文档 extjs-docs-4.0.2.zip

    extjs4.0开发人员以及学习可以下载参考

    EXTJS4.0视频教程 30集 下载地址

    EXTJS 4.0是一款基于JavaScript的开源前端框架,用于构建交互式的Web应用程序。它提供了一套丰富的UI组件库,支持多种浏览器,并具有良好的可扩展性。通过使用EXTJS,开发者可以更轻松地创建功能丰富、用户友好的...

    ExtJs4.0官方版本

    ExtJS 4.0是Sencha公司开发的一款强大的JavaScript前端框架,主要用于构建富客户端Web应用程序。这个官方版本的发布标志着ExtJS在功能、性能和可维护性方面的一个重要里程碑。以下将详细介绍ExtJS 4.0中的核心概念、...

    extjs4.0的高级组件tree加grid整合案例上.part3

    学习extjs资料,tree合成grid,很不错的视频文件,值得收藏

    Extjs4.0学习指南(中文)

    ### Extjs4.0 学习指南核心知识点详解 #### 一、获取与安装Extjs4.0 **1.1 获取Extjs4.0** - **官方资源**: 访问官方网站 [http://extjs.org.cn/](http://extjs.org.cn/) 下载最新版本的Extjs4.0及相关文档和支持...

    Extjs4.0基础学习指南

    一款很好的适合Extjs4.0初学者学习的word文档,示例加上简单的标注说明,使你很快对Extjs4.0进入入门阶段,不可多得的文档,值得下载

Global site tag (gtag.js) - Google Analytics