jquery+treeview+struts2

 

废话不多说!公司要求做tree,花了好久的时间才做成,网络上很多教程都不适合新手!!

效果图

/*
*页面部分
*/
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
 
<title>list</title>
 
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<%@ include file="../head.jsp"%>
<script src="res/common/js/jquery.js" type="text/javascript"></script>
<script type="text/javascript" src="res/jsTree/js/jquery.tree.js"></script>
<script type="text/javascript" src="res/jsTree/js/lib/jquery.hotkeys.js"></script>
<script type="text/javascript" src="res/jsTree/js/lib/jquery.cookie.js"></script>  
<link type="text/css" rel="stylesheet" href="res/jsTree/js/themes/default/style.css"/>
<link href="res/common/css/jquery.treeview.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">
$(function(){
$("#browser").treeview({
url: "treeList.do"
});
});
</script>
</head>
 
<body>
<ul id="browser" class="filetree"></ul>
</body>
</html>
 
 
 
/*
*action部分
*/
 
 
package com.zsdudao.action;
 
import java.io.IOException;
import java.util.List;
 
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
 
import com.zsdudao.BaseAction;
import com.zsdudao.entity.KpiAssign;
import com.zsdudao.service.KpiAssignSrv;
 
@ParentPackage("spring")
public class TreeAction extends BaseAction<KpiAssign> {
/*
 * 注意:这个action不要跳转到前台页面,这是关键,也是我前面一直犯错得地方
 */
private static final long serialVersionUID = 1L;
private List<KpiAssign> listassign;
 
@Resource
private KpiAssignSrv kpiAssignSrv;//service层
/*
* 实体类
*/
private KpiAssign kpiAssign;
private int parenId;
private String root;
HttpServletResponse response = ServletActionContext.getResponse();
 
@Action("treeList")
public String treeList() {
try {
response.setCharacterEncoding("utf-8");//设置response编码
response.getWriter().print(assignJson());//通过response传输json到前台
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
 
/*
* treeView在页面加载的时候会传一个root值:'source'可以用来判断是不是第一次加载
* 点击加号的时候会用root传parentId
*/
public String assignJson() {
String output = "";
if (root == null) {
return "";
} else if (root.equals("source")) {//如果是第一次加载,就读取跟根目录
output = getInitTree();
} else {
output = getChildNode(root);//通过parentId查找子节点
}
return output;
}
 
 
/*
* 查找子节点
*/
private String getChildNode(String parentId) {
StringBuilder jsonString = new StringBuilder();
jsonString.append("[");
int id = Integer.parseInt(parentId);
List<KpiAssign> rootlist = kpiAssignSrv.getListByChild(id);
if (rootlist.isEmpty()) {
return "";
} else {
int i = 0;
for (KpiAssign as : rootlist) {
if (i > 0) {
jsonString.append(",");
}
jsonString.append(toJsonString(as));
i++;
}
jsonString.append("]");
return jsonString.toString();
}
}
 
/*
* 查找初始化第一次加载的时候的数据
*/
 
private String getInitTree() {
StringBuilder jsonString = new StringBuilder();
jsonString.append("[");
List<KpiAssign> rootlist = kpiAssignSrv.getListRoot();//service层定义查找跟节点
int i = 0;
for (KpiAssign as : rootlist) {
if (i > 0) {
jsonString.append(",");
}
jsonString.append(toJsonString(as));
i++;
}
jsonString.append("]");
return jsonString.toString();
}
 
/*
* 将数据转换成json字符串
*/
private String toJsonString(KpiAssign kpiAssign) {
StringBuilder sb = new StringBuilder();
sb.append("{");
sb.append("  \"text\": \"" + assignLinkString(kpiAssign) + "\"");
if (kpiAssignSrv.getListByChild(kpiAssign.getId()).size() > 0) {
sb.append(",  \"id\":\"" + kpiAssign.getId() + "\"");
sb.append(",  \"hasChildren\":true");
}
sb.append(" }");
return sb.toString();
}
 
/*
* link就是前台页面上显示的名称,通过<a>标签达到点名称连接别的页面的效果
*/
private String assignLinkString(KpiAssign kpiAssign) {
String link = "<a href='assignView.do?sid=" + kpiAssign.getId()
+ "&&pid=" + kpiAssign.getProduct().getId()
+ "' rel='nofollow'>" + kpiAssign.getProduct().getName()
+ "&nbsp;责任人:" + kpiAssign.getPrincipal().getUsername()
+ "&nbsp;起始日期:" + kpiAssign.getStartDate() + "&nbsp;截止日期:"
+ kpiAssign.getEndDate() + "</a>";
return link;
}
 
public List<KpiAssign> getListassign() {
return listassign;
}
 
public void setListassign(List<KpiAssign> listassign) {
this.listassign = listassign;
}
 
public KpiAssignSrv getKpiAssignSrv() {
return kpiAssignSrv;
}
 
public void setKpiAssignSrv(KpiAssignSrv kpiAssignSrv) {
this.kpiAssignSrv = kpiAssignSrv;
}
 
public KpiAssign getKpiAssign() {
return kpiAssign;
}
 
public void setKpiAssign(KpiAssign kpiAssign) {
this.kpiAssign = kpiAssign;
}
 
public int getParenId() {
return parenId;
}
 
public void setParenId(int parenId) {
this.parenId = parenId;
}
 
public List<KpiAssign> getList() {
return list;
}
 
public void setList(List<KpiAssign> list) {
this.list = list;
}
 
public String getRoot() {
return root;
}
 
public void setRoot(String root) {
this.root = root;
}
 
}
 
 
 
 
/*
*service使用了baseService太细节的代码我觉得就不需要贴了
*/
 
 
 
package com.zsdudao.service.impl;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
 
import javax.annotation.Resource;
 
import org.springframework.stereotype.Service;
 
import com.zsdudao.dao.KpiAssignDao;
import com.zsdudao.entity.KpiAssign;
import com.zsdudao.service.KpiAssignSrv;
 
@Service("kpiAssignSrv")
 
public class KpiAssignSrvImpl implements KpiAssignSrv {
 
@Resource
private KpiAssignDao kpiAssignDao; 
 
@Override
public List<KpiAssign> query(KpiAssign g) {
return kpiAssignDao.query(g);
}
 
 
 
/*
* 根据父ID得到所有属于这个ID得对象
*/
@Override
public List<KpiAssign> getListByChild(int parentId) {
KpiAssign kpias=kpiAssignDao.get(parentId);
KpiAssign as=new KpiAssign();
as.setKpiAssign(kpias);
return kpiAssignDao.query(as);
}
 
/*

 
* 得到根节点,判断根节点parent的id为空
*/
@Override
public List<KpiAssign> getListRoot() {
List<KpiAssign> list=kpiAssignDao.query();
List<KpiAssign> listas=new ArrayList<KpiAssign>();
for(KpiAssign as:list){
if(as.getKpiAssign()==null){
listas.add(as);
}else{
}
}
return listas;
}
 
}
/*
*实体类部分代码
*/
 
private Integer id;
private Product product;//产品
private KpiAssign kpiAssign;//自身关联自身
private Customer principal;
private Kpi kpi;
private Customer assigner;
private Date startDate;
private Date endDate;
private Integer identifynumber;
private Set<KpiAssign> kpiAssigns = new HashSet<KpiAssign>(0);//自身关联自身
 
 
 
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "kpiAssign")
public Set<KpiAssign> getKpiAssigns() {
return this.kpiAssigns;
}
 
public void setKpiAssigns(Set<KpiAssign> kpiAssigns) {
this.kpiAssigns = kpiAssigns;
}
 
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "parent_id")
public KpiAssign getKpiAssign() {
return this.kpiAssign;
}
 
public void setKpiAssign(KpiAssign kpiAssign) {
this.kpiAssign = kpiAssign;
}

 

 原帖地址http://www.haogongju.net/art/128455

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值