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等都可以在文件夹里找到)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值