`

struts2+Jquery+json+treeview 动态加载树菜单

阅读更多

哎 最近公司项目里需要做组织架构功能,需要用jquery来生成树形菜单,在网上找了四五天,同事说jquery有treeview控件,于是,我在网上找啊找啊,找了好多 ,发现很多都不完整,弄得我花了好多时间,之前没深入接触过Jquery,所以不是很懂。弄了四五天,找来找去,还是那些,哎。同事说这个不难,我对自己也感到很自信。不过花了这么多天都没有一点结果,感觉好郁闷啊。突然,就在今天,那个动态树形菜单被弄出来了。呵呵,有点高兴哦!!!

我的页面时ftl的 不过没关系。一样用。

 

页面代码如下:(记得页面需要导入js文件【jquery.cookie.js,jquery.treeview.async.js,jquery.treeview.js,jquery.treeview.edit.js】)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>系统部门列表 - Powered By ${systemConfig.systemName}</title>
<meta name="Author" content="SHOP++ Team" />
<meta name="Copyright" content="SHOP++" />
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<#include "/WEB-INF/template/common/include.ftl">
<link href="${base}/template/admin/css/list.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="${base}/css/tree/jquery.treeview.css" type="text/css" />
<link rel="stylesheet" href="${base}/css/tree/screen.css"  type="text/css"/>
<script type="text/javascript" src="${base}/template/admin/js/list.js"></script>
</head>
<body class="ie"> 
    <frameset cols="50%,*"  frameborder="1">   
     <frame src="" name="leftMenu">
      <div id="tree" style="font-size:16px;">            
      </div>
  </frame> 
  <frame src="" name="rightMenu">
  </frame>
 </frameset> 
 
</body>
<script language="JavaScript">
    $(document).ready(function(){
          $("#tree").treeview({
                  collapsed: true,
      animated: "medium",
                  url: "sys_department!treeList.action"
         });
    });
</script>
</html>

 

好了利用jquery的方法调用后台方法后就去action类:

 

/**
  * 构造树形菜单
  *
  */
 
 public String treeList(){
  try {
   getResponse().getWriter().print(generateJTVJsonString());
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return null;
 }
 
 /**
  * 产生jquery.treeview的jsonstring
  */ 
  public String generateJTVJsonString() {  
      
  System.out.println("generateJTVJsonString start .....");   
     String id = getRequest().getParameter("root");  
     System.out.println("id:"+id);  
     String output = "";  
     if (id == null) {  
        return "";  
     } else if (id.equalsIgnoreCase("source")) {  
       output = generateInitTreeString();  
        } else {  
      output = generateTreeChildNodeString(id);  
  }  
     System.out.println("generateJTVJsonString end,return:"+output);  
       return output;  
  }  


  /**
    * 产生子节点jsonstring 
  **/ 
   private String generateTreeChildNodeString(String departmentId) {  
       StringBuilder jsonString = new StringBuilder();  
       jsonString.append("[");  
       List<SysDepartment> rootlist =sysDepartmentService.getDepartmentRootsById(departmentId);  
       if (rootlist.isEmpty())  
            return "";  
       int i = 0;  
       for (SysDepartment sysDepartment : rootlist) {  
           if (i > 0) {  
              jsonString.append(",");  
           }  
           jsonString.append(toJSONString(sysDepartment));  
           i++;  
       }    
        jsonString.append("]");  
        return jsonString.toString();  
     }  
 
   private String generateInitTreeString() {  
    
    StringBuilder jsonString = new StringBuilder();  
    jsonString.append("[");  
    List<SysDepartment> rootlist = getAllSysDepartments();  
    int i = 0;  
    for (SysDepartment sysDepartment : rootlist) {  
       if (i > 0) {  
          jsonString.append(",");  
    }  
          jsonString.append(toJSONString(sysDepartment));  
          i++;  
    }  
        jsonString.append("]");  
        return jsonString.toString();  
    }  

//   /**
//    * 将对象转换成String
//    * @param sysDepartment
//    * @return
//    */
   private String toJSONString(SysDepartment sysDepartment) {  
      StringBuilder sb = new StringBuilder();  
      sb.append(" {");  
   sb.append("  \"text\": \"" + generateLinkString(sysDepartment) + "\"");  
   if (sysDepartmentService.getDepartmentRootsById(sysDepartment.getDepartmentId()).size()>0) {  
   sb.append(",  \"id\":\"" + sysDepartment.getDepartmentId() + "\"");  
             sb.append(",  \"hasChildren\":true");  
   }  
      sb.append(" }");  
      return sb.toString();  
    }  
    
   /**
    * 设置超链接
    * @param category
    * @return
    */
   private String generateLinkString(SysDepartment  sysDepartment) {  
      String link = "<a href='sys_department!dedaoDepartmentById.action?id="+sysDepartment.getDepartmentId()+"' target='parent.rightMenu' >" + sysDepartment.getDepartmentName() + "</a>";  
       //link = category.getCatName();  
      return link;  
      }  

还有需要样式以及存放js文件的文件夹:我打包了(注:压缩包里的文件夹放到webRoot下,js,css等都可以在文件夹里找到)

 

分享到:
评论
11 楼 游其是你 2014-09-26  
javastation 写道
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用

这回复屌爆了....
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用

引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
10 楼 javastation 2014-09-26  
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
9 楼 javastation 2014-09-26  
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
8 楼 javastation 2014-09-26  
[b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
7 楼 zgphacker2010 2013-05-27  
klinchao 写道
url: "sys_department!treeList.action"
楼主可以发下struts.xml关于这个action的配置吗


您好,很抱歉,那些东西没有哦。。。您看看那个url吧:  “url: "sys_department!treeList.action"   这个url实际上就调用的是action中的 treeList的方法。。。文章的上面已经写出来了action类的核心代码,您需要把这些代码加入到您自己写的按action类中即可,然后在strut.xml中配置自己的action。。。
访问url请求的action类的方法:
public String treeList(){
  try {
   getResponse().getWriter().print(generateJTVJsonString());
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return null;
}


6 楼 klinchao 2013-05-17  
url: "sys_department!treeList.action"
楼主可以发下struts.xml关于这个action的配置吗
5 楼 klinchao 2013-05-17  
url: "sys_department!treeList.action"
这个怎么访问啊。我怎么也访问不到ACTION路径
4 楼 zgphacker2010 2012-09-14  
燃木刀法 写道
楼主 能不能把你的整个工程发一下? 不胜感激。

没有哦,关键性的代码已经贴出来了哦
3 楼 燃木刀法 2012-09-14  
楼主 能不能把你的整个工程发一下? 不胜感激。
2 楼 a380725424 2011-06-08  
楼主的代码不错啊  值得学习啊
1 楼 iamleo 2011-04-13  
支持楼主

相关推荐

    struts+jQuery实现树

    在Struts中,可以通过Action来处理请求,返回JSON或XML格式的数据,jQuery则负责异步请求这些数据,并使用`$.ajax`或`$.getJSON`方法将接收到的数据转化为树节点,动态插入到HTML中。 **2. jQuery的树形插件** 在...

    SSH+Jquery+ajx TreeView源码

    当用户展开或点击树形菜单的某个节点时,jQuery会发起Ajax请求,服务器根据请求返回相应的子节点信息,然后在客户端动态更新TreeView,显示新的子节点。 具体到源码,可能包括以下部分: 1. **前端部分**:使用...

    动态树的管理程序(基于jQuery Treeview实现)-java源码

    总的来说,这个项目展示了如何结合使用jQuery Treeview进行前端展示,以及Struts2、Spring和Hibernate这三大Java EE框架进行后端处理,构建一个动态的、交互式的树状数据管理界面。理解并掌握这些技术对于提升Web...

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

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

    jquery动态生成树

    本示例代码“jquery动态生成树”是关于如何利用jQuery和相关技术,如Struts2、treeview插件及JSON数据格式,来动态地在网页上构建一个可交互的目录树结构。 首先,让我们详细了解一下每个组件的作用: 1. **jQuery...

    struts2树的编写

    通过合理的数据库设计、高效的查询方式以及动态加载策略,可以在Struts2应用中实现功能丰富的树形结构,为用户提供直观、交互性强的界面。同时,对于大型项目,还可以考虑使用缓存机制来优化性能,减少对数据库的...

    Struts实现动态树

    在描述中提到的“Struts2实现动态树结合Hibernate”,这意味着我们将讨论如何在Struts2中创建一个能够动态加载数据的树形结构,并利用Hibernate作为持久层框架来管理数据库交互。 动态树视图是一种用户界面元素,它...

    jQuery树形菜单插件

    在Java Web应用中,后台通常使用Spring MVC、Struts2或其他框架处理请求和返回JSON数据,前端使用jQuery插件解析并渲染成树形菜单。例如,使用Ajax请求获取目录结构,然后将结果传递给jQuery插件生成菜单。 7. **...

    struts2动态树形目录

    在本项目中,"struts2动态树形目录"实现了这一功能,用户可以通过界面动态地创建、编辑和删除目录。 首先,让我们深入了解一下Struts2框架。Struts2基于拦截器模式,提供了丰富的插件和拦截器,支持多种视图技术如...

    jstree+JS树形菜单合集

    "用TreeView加VS做动态树形菜单(带节点互斥)"可能是关于使用Visual Studio(VS)开发工具创建的树形菜单,同时实现了节点互斥功能。节点互斥意味着一次只能选择一个节点,这对于需要进行单一选择的场景非常有用,...

    struts2_tree

    3. **控制器(Controller)**:Struts2的动作类(Action)作为控制器,负责处理用户的请求,如获取初始树结构、加载子节点或执行与树节点相关的业务操作。你需要在Action中编写方法来查询数据库或任何数据源,获取树...

    代码

    8. **动态加载**:对于大型菜单系统,可以采用懒加载策略,只在用户展开某个节点时才加载其子节点,提高页面性能。 9. **可扩展性**:设计时应考虑菜单的增删改查操作,确保系统能支持动态维护菜单结构。 综上所述...

    使用SSH框架实现的树形结构

    Struts2的配置文件中可以定义多个Action,以处理不同类型的请求,比如加载树节点、展开或折叠节点等。 Hibernate是对象关系映射(Object-Relational Mapping, ORM)框架,它简化了数据库操作。在树形结构中,数据...

    javaweb通用组件

    例如,可以使用Struts2或Spring MVC框架中的日期插件来集成此类控件。 2. **分页控件**: 分页控件在大数据量展示时尤为重要,它允许用户按需加载数据,提高页面加载速度并优化用户体验。在JavaWeb中,分页可以...

    EasyUI 实例代码

    EasyUI 是一个基于 jQuery 的前端框架,主要用于构建用户界面,尤其在企业级应用中非常常见。这个实例代码集合是某位开发者在学习 EasyUI 过程中编写的,旨在帮助他人理解和掌握 EasyUI 的核心功能和用法。下面将...

Global site tag (gtag.js) - Google Analytics