`
huibin
  • 浏览: 757096 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

Ext+json+jsp构建的动态树

    博客分类:
  • EXT
阅读更多

树节点组合模型
package cn.com.jsnh.model.catalog;

public class TreeModel {
    private String node;
    private CatalogModel model;

    public String getNode() {
        return node;
    }

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

    public CatalogModel getModel() {
        return model;
    }

    public void setModel(CatalogModel model) {
        this.model = model;
    }

}

栏目模型【实际的树节点】
package cn.com.jsnh.model.catalog;

public class CatalogModel {
    private String id;
    private String text;
    private Boolean leaf;
    private String cls;
    private String action;
    private String model;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public Boolean getLeaf() {
        return leaf;
    }

    public void setLeaf(Boolean leaf) {
        this.leaf = leaf;
    }

    public String getCls() {
        return cls;
    }

    public void setCls(String cls) {
        this.cls = cls;
    }

    public String getAction() {
        return action;
    }

    public void setAction(String action) {
        this.action = action;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

}

<%@ page import="java.util.*,
                 cn.com.jsnh.model.catalog.TreeModel,
                 cn.com.jsnh.model.catalog.CatalogModel,
                 net.sf.json.JSONObject,
                 net.sf.json.JSONArray,
                 net.sf.ezmorph.bean.MorphDynaBean"
                    contentType="text/html;charset=utf-8"%>
<%
try{
        String node = request.getParameter("node");
        System.out.println("node="+node);
    
        List<TreeModel> tree = new ArrayList<TreeModel>();
        TreeModel treeModel = new TreeModel();
        
        CatalogModel catalogModel = new CatalogModel();
        catalogModel.setId("100000");
        catalogModel.setText("个人管理专区");
        catalogModel.setLeaf(Boolean.FALSE);
        catalogModel.setCls("folder");
        catalogModel.setAction("100000");
        catalogModel.setModel("100000");
        treeModel.setNode("root");
        treeModel.setModel(catalogModel);
        tree.add(treeModel);
        
        treeModel = new TreeModel();
        catalogModel = new CatalogModel();
        catalogModel.setId("100001");
        catalogModel.setText("修改我的资");
        catalogModel.setLeaf(Boolean.TRUE);
        catalogModel.setCls("file");
        catalogModel.setAction("x.action");
        catalogModel.setModel("user");
        treeModel.setNode("100000");
        treeModel.setModel(catalogModel);
        tree.add(treeModel);
        
        treeModel = new TreeModel();
        catalogModel = new CatalogModel();
        catalogModel.setId("100002");
        catalogModel.setText("个人消息");
        catalogModel.setLeaf(Boolean.TRUE);
        catalogModel.setCls("file");
        catalogModel.setAction("x.action");
        catalogModel.setModel("message");
        treeModel.setNode("100000");
        treeModel.setModel(catalogModel);
        tree.add(treeModel);
        
        List<CatalogModel> catalogList = new ArrayList<CatalogModel>();
        for(TreeModel o:tree){
            if(o.getNode().equals(node)){
                catalogList.add(o.getModel());
            }
        }
        
        JSONArray json = JSONArray.fromObject(catalogList);
        
    response.getWriter().write(json.toString());
    
} catch(Exception ex) {
}
%>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>后台框架演示</title>
    <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css"/>
    <link rel="stylesheet" type="text/css" href="css/common.css"/>
    <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="../extjs/ext-all.js"></script>

    <script type="text/javascript" src="../extjs/ext-lang-zh_CN.js"></script>
    <script type="text/javascript" src="script/common.js"></script>
    <script type="text/javascript" src="script/json/json.js"></script>
    <script type="text/javascript" src="script/json/json2.js"></script>

</head>

<body>
<script type="text/javascript">
var Tree = Ext.tree;
var root = new Tree.AsyncTreeNode({
    text: 'Ext JS',
    draggable:false,
    id:'root',
    children:[{//子节点
    text:'loading',//显示文字为loading
    iconCls: 'loading',//使用图标为loading 在index.html style 中定义
    leaf:true//是叶子节点,不再包含子节点
  }]
    
});

var treeLoader=new Ext.tree.TreeLoader();//指定一个空的TreeLoader

var tree = new Ext.tree.TreePanel({
    contentEl:'west',
    border:true,
    root:root,
    region:'west',
    id:'west-panel',
    split:true,
    width: 200,
    minSize: 175,
    maxSize: 400,
    margins:'0 0 0 0',
    layout:'accordion',
    title:'功能菜单',
    collapsible :true,
    layoutConfig:{
        animate:true
        },
    rootVisible:true,
    autoScroll:true,
    loader:treeLoader
    });
tree.on('click',treeClick);
//tree.expandAll();
var tab = new Ext.TabPanel({
    region:'center',
    deferredRender:false,
    activeTab:0,
    items:[{
        contentEl:'center2',
        title: '首页',
        autoScroll:true
    }]
});
function treeClick(node,e) {
     if(node.isLeaf()){
        e.stopEvent();
        var n = tab.getComponent(node.id);
        if (!n) {
            var n = tab.add({
                'id' : node.id,
                'title' : node.text,
                closable:true,
                html : '<iframe scrolling="auto" frameborder="0" width="100%" height="100%"

src="index.php?model='+node.attributes.model+'&action='+node.attributes.action+'"></iframe>'
                });
        }
        tab.setActiveTab(n);
     }
}
function newTab(id,text,url) {
      var n = tab.getComponent(id);
        if (!n) {
            var n = tab.add({
                'id' : id,
                'title' : text,
                closable:true,
                html : '<iframe scrolling="auto" frameborder="0" width="100%" height="100%"

src="'+url+'"></iframe>'
                });
        }
        tab.setActiveTab(n);
}

function gettree(node){
  if(node.firstChild.text=='loading'){
   var par = node.id;
   //alert('par='+par);
   Ext.Ajax.request({
    url: 'jsonTree.jsp',
    params: {node:par},
    method: 'GET',
    success: function(v){  //成功返回
     var myData = JSON.parse(v.responseText); // 得到服务器返回的json串,并用json.js解析过对象数组
            for(var i=0;i<myData.length;i++ ){
            var cnode=new Ext.tree.AsyncTreeNode({
               id:myData<i>.id,//id 为服务器返回id 父节点id
               text:myData<i>.text,//显示内容为服务器返回id 父节点id
               leaf:myData<i>.leaf,//是否为叶子节点,根据服务器返回内容决定是否为叶子节点
               children:[{//添加子节点,如果服务器返回tl<i>.leaf为ture则孩子节点将无法显示
                text:'loading',
                iconCls: 'loading',
                leaf:true
               }]
            });
            cnode.on('expand',gettree);//定义当前节点展开时调用gettree方法,再次异步读取子节点
              node.appendChild(cnode);//将当前节点添加为待展开节点子节点
           }
           node.firstChild.remove();//删除当前节点第一个孩子节点(loading节点)
    },
    failure: function2  // 失败
   });
  }
 }

 function function2(){
  alert("failure");
 }


Ext.onReady(function(){
   var viewport = new Ext.Viewport({
        layout:'border',
        items:[
            new Ext.BoxComponent({
                region:'north',
                el: 'north',
                height:35
            }),
            tree,
            tab
         ]
    });

    tree.render();
    root.on('expand',gettree);//当根节点展开后触发gettree事件
    //root.expand();
    loadend();
});

function openWindow(id,title,url,width,height){
    var win = Ext.get(id)
    if (win) {
        win.show();
        return;
    }
    win = new Ext.Window({
        id:id,
        title:title,
        layout:'fit',
        width:width,
        height:height,
        closeAction:'close',
        collapsible:true,
        plain: true,
        html : '<iframe frameborder="0" width="100%" height="100%" src="'+url+'"></iframe>'
    });
    win.show();
}
</script>
<div id="north">
    <p class="api-title">MYOIS 1.0 Office Information System</p>
</div>

<div id="west">
</div>
<div id="center2">center2</div>
<div id="loading-mask" style=""></div>
<div id="loading">
    <div class="loading-indicator"><img src="images/loading.gif" width="32"
                                        height="32" style="margin-right:8px;" align="absmiddle"/>Loading...
    </div>
</div>
</body>

</html>

分享到:
评论

相关推荐

    Ext+json+jsp动态加载树

    "Ext+json+jsp动态加载树"的项目就是一个典型的示例,它展示了如何利用ExtJS框架、JSON数据格式以及JavaServer Pages(JSP)技术来实现一个可动态加载数据的树形视图。下面将详细介绍这些知识点: 1. **ExtJS框架**...

    Struts2+Spring2.5+jdbc+Ext+json实例的lib包

    Struts2、Spring2.5、JDBC、Ext和JSON是构建现代企业级Java应用程序的重要技术组件。在本文中,我们将深入探讨这些技术的核心概念、它们如何协同工作以及在实际项目中的应用。 **Struts2** 是一个基于MVC(模型-...

    struts2+spring2.5+jdbc+ext+json实例用到的lib包

    Struts2、Spring 2.5、JDBC、Ext 和 JSON 是 Java Web 开发中常见的技术栈,它们各自承担着不同的职责,共同构建了一个功能强大的应用程序。在这个实例中,我们看到的是一个集成这些技术的库文件集合。接下来,我们...

    @@@java+struts2+ext+json(完整的示例程序)实现CRUD

    Java、Struts2、EXT和JSON是Web开发中常见的技术栈,它们的组合可以构建功能丰富的、用户友好的企业级应用程序。在这个完整的示例程序中,我们将深入理解这些技术如何协同工作来实现创建(Create)、读取(Read)、...

    Ext+jsp+servlet做到学生信息管理系统(带数据库)

    【标题】"Ext+jsp+servlet做到学生信息管理系统(带数据库)"是一个基于Web的教育管理系统的实现,它结合了三种技术:ExtJS、JSP和Servlet,用于创建一个功能完善的学籍管理系统。该系统的核心功能是管理和维护学生...

    ext+struts2+json登陆方法.pdf

    在本案例中,我们看到一个使用Ext JS 2.2进行登录实现的方法,结合了Struts2和JSON来处理用户输入和响应。以下是这个登录方法的详细解释: 1. **依赖库**: - `Commons-logging-1.0.4.jar`: Apache Commons ...

    ext+struts2+json登陆方法借鉴.pdf

    Struts2是一个流行的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。在本示例中,它与Ext JS 2.2集成,利用JSON(JavaScript Object Notation)进行数据交换,实现用户登录功能。以下是这个登录...

    ext tree json 例子(不含EXT包)

    最后,`extjs学习笔记三[Ext+json+jsp构建的动态树].mht`可能涵盖了一个基于EXT JS、JSON和JSP(Java Server Pages)构建动态树的教程。JSP通常用于动态生成HTML页面,而在这个案例中,它可能被用来生成JSON数据,...

    Ext+JSP实现数据提交

    在IT行业中,Web开发是至关重要的领域,而`Ext`和`JSP`的结合使用则是构建动态交互式Web应用的常见方式。本篇将详细探讨如何利用`Ext`前端框架与`JSP`服务器端页面来实现数据的提交。 `Ext`是一个强大的JavaScript...

    ext+jsp实现登入.rar

    EXT JS通常用于构建用户界面,而JSP则处理服务器端逻辑。这个压缩包包含了实现这一功能的两个关键文件:login.html和getdata.jsp。 在EXT JS中,login.html可能是主页面,它包含EXT JS库的引用,以及用于创建登录...

    SSH+EXT如何返回JSON

    ### SSH+EXT如何返回JSON详解 #### 一、概述 在Web开发中,前后端分离是一种常见的架构模式,其中后端主要负责数据处理与逻辑控制,而前端则专注于用户界面的展示。为了实现前后端之间的数据交换,JSON...

    Ext+struts+ibatis 完整项目

    它提供了丰富的组件库,包括表格、表单、树形视图、图表等,使得开发者可以构建出交互性强、用户体验良好的前端应用。在本项目中,ExtJS可能被用作UI框架,用于创建各种交互元素和页面布局。 **Struts** 是一个基于...

    Extjs Tree + JSON + Struts2

    ExtJS Tree + JSON + Struts2 是一个常见的前端与后端交互技术组合,常用于构建动态的、数据驱动的树形结构界面。在这个项目中,`index.html` 是主页面,`tree.js` 包含了 ExtJS 的树组件相关的 JavaScript 代码,`...

    ext+struts1.2图书管理系统

    解压后,开发者可以研究其目录结构,理解 EXT 和 Struts1.2 如何协同工作,查看具体的 Action 类如何处理请求,以及 JSP 页面如何与 EXT 组件交互。此外,还可以学习到如何配置 Struts 的配置文件(struts-config.xml...

    JSON.rar_JSON Hibernate_extjs_json struts ext_jsp json extjs_str

    在标签"json_hibernate extjs json_struts_ext jsp_json_extjs struts2"中,"json_struts_ext"和"jsp_json_extjs"暗示了JSON在Struts2扩展和JSP与ExtJS之间的交互作用。可能有一个配置或者插件用于让Struts2的动作类...

    Ext JS mvc +jsp 例子

    Ext JS 是一个强大的JavaScript框架,主要用于构建富客户端的Web应用程序。它提供了丰富的组件库和一个...通过这样的整合,你可以充分利用Ext JS的强大UI功能和JSP的服务器端处理能力,构建出高效且功能丰富的Web应用。

    Ext Gantt + jsp + servlet 工程实例(EXT 甘特图实例)

    在这个"Ext Gantt + jsp + servlet 工程实例"中,我们将探讨如何将Ext Gantt与Java后端技术,即JSP和Servlet相结合,构建一个完整的Web应用。 1. **Ext Gantt**: Ext Gantt是Ext JS组件库的一部分,提供了一套完整...

    ext+servlet进度条(内附jar包)

    JSP通常用于动态生成HTML页面,可能在这里用来生成包含EXT组件的页面结构,或者作为Servlet和EXT之间的中间层,传递进度信息。 8. **项目结构**:压缩包中的`test1`可能是一个测试目录或者文件,包含了具体的项目...

    ext json struts 完整无错源码

    总结来说,"ext json struts 完整无错源码" 是一个很好的学习资源,可以帮助开发者了解如何将现代前端技术(EXT)与后端 Java Web 开发框架(Struts)相结合,通过 JSON 进行数据交换,创建高效、动态的 Web 应用...

    ExtJS+struts2+json登陆实例--源码

    首先,Ext JS 2.2是用于构建富客户端应用的JavaScript库,它提供了丰富的组件和布局,使得在浏览器端创建复杂的用户界面变得容易。在这个登录实例中,Ext JS用于创建交互式的登录表单和处理用户输入。 Struts2是...

Global site tag (gtag.js) - Google Analytics