`
xym_love
  • 浏览: 114857 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Struts2+JSON(struts2-json-plugin-2.2.1.1.jar)+ExtJs(动态树)

阅读更多

本文的对象是那些ExtJs初学者,为了不耽误您的时间,请误闯者离开亦或是离开

多话不说

ExtJs动态实现树代码,希望能给读者带来帮助...

/** ******************使用panel整个布局使用accordion************************* */
 var left = new Ext.Panel({
    region : 'west',
    id : 'west-panel',
    title : '加载中....',
    split : true,
    width : 200,
    minSize : 175,
    collapsible : true,
    margins : '0 0 0 5',
    layout : 'accordion',
    layoutConfig : {
     animate : true
    },
    items : [],
    listeners : {
     // 查询数据动态构造菜单树
     'beforerender' : function(evt, element) {
      var myajax = Ext.Ajax.request(queryAllConfig(evt,
        element));
     }
    }
   });
 // 查询所有(进入首页,或刷新,执行一次)
 var queryAllConfig = function(evt, element) {
  return {
   url : 'main/tree/showAll.do',
   success : allSCallBack,
   failure : allFCallBack,
   method : 'post',
   // 10秒
   timeout : 1000 * 10,
   params : {
    'data' : new Date()
   }
  }
 }
 // 成功回调[全部]
 var allSCallBack = function(result, request) {

  if (!Ext.isEmpty(result.responseText)) {
   var treeList = Ext.util.JSON.decode(result.responseText);
   // alert(result.responseText);
   if (treeList.length == 0)
    left.setTitle('暂无数据');
   else {
    left.setTitle('功能菜单');
   }
   for (var i = 0; i < treeList.length; i++) {
    var condition = {
     'title' : treeList[i].modName,
     'parentId' : treeList[i].modId
    };
    // 构造多个treepanel
    var treePanel = new Ext.tree.TreePanel(treePanelConfig(condition));
    left.add(treePanel);
   }
   // 记得最后一次需要重绘
   left.doLayout();
   left.items.items[0].expand(true);
  }

 }
 // 失败回调[全部]
 var allFCallBack = function(result, request) {

 }
 // 失败回调[部分]
 var partFCallBack = function(result, request) {

 }
 // 构造多个treepanel添加到panel中
 var treePanelConfig = function(obj) {
  var requestNum = -1;// 保存树上次的请求状态
  if (Ext.isEmpty(obj)) {
   obj = {
    'title' : '暂无数据',
    'parentId' : '-1'
   };
  }
  return {
   title : obj.title,
   autoScroll : true,
   animate : true,
   border : false,
   iconCls : 'settings',// 'settings'
   rootVisible : false,
   containerScroll : true,
   collapsed : true,// 设定全部关闭
   
   // SyncTreeNode instance
   loader : new Ext.tree.TreeLoader({
    dataUrl : 'main/tree/showPart.do',
    listeners : {
     'beforeload' : function(treeLoader, curNode) {
      this.baseParams.parentId = curNode.attributes.id;
     }
    }
   }),

   root : {
    nodeType : 'async',
    id : obj['parentId'],
    expanded : false
   },
   listeners : {
    // 防止用户使劲单击,要对事件进行处理,判断上次的有没有执行完,是继续否返回
    'click' : function(n) {
     try {
      var sn = this.selModel.selNode || {};
      if (n.leaf && !n.disabled) {
       var nodePanel = tab.getComponent(n.id);
       if (!nodePanel) { // 判断是否已经打开该面板
        nodePanel = tab.add({
         'id' : n.id,
         'title' : n.text,
         closable : true, // 通过html载入目标页
         html : '<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src="'
           + n.attributes.path + '"></iframe>'
        });
       }
       tab.setActiveTab(nodePanel);
      } else {
      }
     } catch (e) {
     }
    }
   }
  }
 };

 

PS:var tab = new Ext.TabPanel({
  region : 'center',
  deferredRender : false,
  activeTab : 0,
  plugins : new Hs.index.TabCloseMenu(),
  resizeTabs : true, // turn on tab resizing
  minTabWidth : 115,
  tabWidth : 135,
  autoDestroy : true,
  margins : '0 5 0 0',
  enableTabScroll : true,
  items : [start]
  });

分享到:
评论

相关推荐

    SSH+EXTJS4。doc

    EXTJS4可以通过JSON与服务器端进行数据交换,因此需要Struts2的JSON插件支持,即`struts2-json-plugin-2.3.4.1.jar`,用于处理JSON请求和响应。 【项目搭建步骤】 1. **Eclipse中创建SSH项目**:使用Eclipse创建一...

    Extjs整合struts2.doc

    在整合 Struts2 时,你需要确保添加了必要的依赖库,例如 `struts2-json-plugin-2.1.8.jar`,这个插件允许 Struts2 将结果直接转换为 JSON 格式,便于与 ExtJS 通信。 配置方面,你需在 `web.xml` 文件中设置 ...

    struts2和ExtJs整合实例

    - `struts.xml`:配置Struts2的核心配置文件,需要添加JSON插件支持,例如`struts-plugin.xml`,确保Action能够返回JSON格式的数据。 - `struts-default.xml`或自定义的Result类型:配置Action的Result,设置为...

    ExtJS实现多文件上传UploadDialog For ExtJS3.x

    在描述中提到,我们需要将一系列Struts2相关的库文件复制到项目的`WebContent\lib`目录下,包括`struts2-codebehind-plugin-2.1.6.jar`、`struts2-core-2.1.6.jar`、`struts2-spring-plugin-2.1.6.jar`、`xwork-...

    ext如何与struts2整合

    在原有的Struts2项目中,除了基本的Struts2库,还需要引入两个额外的jar包:struts2-json-plugin-2.1.8.1.jar和json-lib-2.1.jar。这两个jar包提供了JSON的支持,因为JSON是一种轻量级的数据交换格式,适合于在...

    stuts2和extjs结合实例

    - 特别需要注意的是,除了常规的Struts2 jar包外,还需额外引入`struts2-json-plugin-2.1.8.1.jar`和`json-lib-2.1.jar`两个库。这些库对于实现Struts2与ExtJS之间的数据交换至关重要。 3. **ExtJS资源文件**: -...

    EXT树简介.doc

    在尝试使用EXTJS Tree时,作者遇到了一个问题:EXTJS Tree要求JSON数据以数组形式返回,而Struts2的json-plugin默认生成的是一个JSON对象。例如: ```json // json-plugin生成的数据 { "cls": "folder", "id": 10...

    Java的Struts2框架配合Ext JS处理JSON数据的使用示例

    从给定内容中可以看出,Ext JS需要的是一个JSON数组格式,而Struts2 json-plugin默认生成的是一个JSON对象格式。这种格式上的微小差异会导致Ext JS无法正确解析数据,从而不能动态加载树状菜单的数据项。 为解决这...

    struts与ext集成

    这通常包括struts2-core、struts2-ext-plugin以及EXT库的相关JAR文件。 2. **添加Struts2和EXT的配置** 在struts.xml配置文件中,你需要定义EXT插件,并指定EXT库的路径。例如: ```xml &lt;constant name="struts....

Global site tag (gtag.js) - Google Analytics