一个jQuery EasyUI tree+Struts2+MyBatis例子

效果:

一个jQuery EasyUI tree+Struts2+MyBatis例子_第1张图片

前台代码,没什么好说的,照搬官方文档的。采用异步加载子节点的方式,展开一个节点时把这个节点的id传到后台,获取该节点的子节点。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here







	

    按照官方文档的说明,后台方法传回的json数组必须是下面这种形式,数据才能帮到tree上。
    [{
        "id": 1,
        "text": "Node 1",
        "state": "closed",
        "children": [{
            "id": 11,
            "text": "Node 11"
        },{
            "id": 12,
            "text": "Node 12"
        }]
    },{
        "id": 2,
        "text": "Node 2",
        "state": "closed"
    }]
    其中的id、text、state和children都是tree中节点的属性。id是节点的编号,这个例子里使用的是数据库表的主键;text是节点上显示的文本;state是节点的状态,默认是打开;children是节点的子节点。为了符合tree的要求,我建立了一个TreeNode类来对应这些属性。


    TreeNode类代码如下:

    public class TreeNode {
    	private Integer id;//节点编号
    	private String text;//节点文本
    	private String state="closed";//节点状态
    	private List children=new ArrayList();//子节点集合
    	public TreeNode() {}
    	public TreeNode(Integer id, String text) {
    		this.id = id;
    		this.text = text;
    	}
    	public Integer getId() {
    		return id;
    	}
    	public void setId(Integer id) {
    		this.id = id;
    	}
    	public String getText() {
    		return text;
    	}
    	public void setText(String text) {
    		this.text = text;
    	}
    	public String getState() {
    		return state;
    	}
    	public void setState(String state) {
    		this.state = state;
    	}
    	public List getChildren() {
    		return children;
    	}
    	public void setChildren(List children) {
    		this.children = children;
    	}
    }
    

    测试用的实体类:
    public class Privilege implements Serializable {
    	
    	private static final long serialVersionUID = -104941301217905290L;
    	private Integer id;//权限编号
    	private String name;//权限名称
    	private Integer level;//权限层级
    	private Integer parentId=0;//上级权限
    	public Integer getId() {
    		return id;
    	}
    	public void setId(Integer id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public Integer getLevel() {
    		return level;
    	}
    	public void setLevel(Integer level) {
    		this.level = level;
    	}
    	public Integer getParentId() {
    		return parentId;
    	}
    	public void setParentId(Integer parentId) {
    		this.parentId = parentId;
    	}
    }
    

    MyBatis的mapper:
    
    
    
    	
    		
    		
    		
    	
    	
    	
    

    因为要返回json数组,所以在struts.xml里做相应的配置:

    
    
    
    	
    		
    			
    				result
    			
    		
    	
    

    Action类代码:

    package easyui.action;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import easyui.entity.Node;
    import easyui.entity.Privilege;
    import easyui.entity.User;
    import easyui.util.TreeNode;
    
    @SuppressWarnings("serial")
    public class JsonAction extends BasAction{
    	
    	private Map result=new HashMap();
    	
    	public Map getResult() {
    		return result;
    	}
    
    	public void setResult(Map result) {
    		this.result = result;
    	}
    	
    	public String getNodes(){
    		//声明一个变量储存前台传递的节点编号
    		int id=0;
    		//如果key为id的参数不为空
    		if(parameters.get("id")!=null){
    			//把key为id的参数的第一个值放在id中
    			id=Integer.parseInt(parameters.get("id")[0]);
    		}
    		//建立一个TreeNode类集合存放节点
    		List treeNodes=new ArrayList();
    		//查询上级权限编号等于id的权限
    		List privileges=sqlSession.selectList("selectByParentId", id);
    		//遍历查询结果
    		for(Privilege privilege:privileges){
    			//实例化TreeNode类对象
    			TreeNode treeNode=new TreeNode(privilege.getId(), privilege.getName());
    			//如果当前遍历到的权限没有下级权限
    			if(sqlSession.selectList("selectByParentId", privilege.getId()).size()<1){
    				//设置节点状态为打开
    				treeNode.setState("open");
    			}
    			//把节点放入集合中
    			treeNodes.add(treeNode);
    		}
    		result.put("treeNodes",treeNodes);
    		return SUCCESS;
    	}
    }

    页面加载时后台返回的数据:
    {"treeNodes":[{"children":[],"id":1,"state":"closed","text":"系统管理"},{"children":[],"id":40,"state":"closed","text":"审批流转"},{"children":[],"id":41,"state":"closed","text":"实用工具"}]}

    效果:


    展开第一个节点时后台返回的数据:

    {"treeNodes":[{"children":[],"id":4,"state":"closed","text":"部门管理"},{"children":[],"id":5,"state":"closed","text":"岗位管理"},{"children":[],"id":6,"state":"closed","text":"用户管理"}]}

    效果:

    一个jQuery EasyUI tree+Struts2+MyBatis例子_第2张图片

    你可能感兴趣的:(jquery,jquery,easyui,struts2,mybatis,json)