`

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  
支持楼主

相关推荐

Global site tag (gtag.js) - Google Analytics