zoukankan      html  css  js  c++  java
  • easyui struts后台实现tree返回json数据

    首先jsp页面有一ul用于展现tree

    <ul id="trueULid"></ul>

    加载tree

    <script type="text/javascript">
    $(function() {
       $('#trueULid').tree( {
    	 url : 'admin/HhTestTree.do'
       });
    });
    </script>

    配置action
    <action name="HhTestTree" method="testTree"
    	class="org.bkgd.ehome.jeeplugin.message.web.action.ActionHhMessageTypeQuery">
    	<result type="json">
    		<param name="root">testTreeNodes</param>
    	</result>
    </action>

    需要封装对象tree
    public class TestTreeNode implements Serializable {
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	private String id;
    	private String text;
    	private String state = "open";
    	private boolean checked;
    
    	public TestTreeNode(String id, String text, String state, boolean checked) {
    		this.id = id;
    		this.text = text;
    		this.state = state;
    		this.checked = checked;
    	}
    	public String getId() {
    		return id;
    	}
    
    	public void setId(String id) {
    		this.id = id;
    	}
    
    	public String getText() {
    		return text;
    	}
    
    	public boolean isChecked() {
    		return checked;
    	}
    
    	public void setChecked(boolean checked) {
    		this.checked = checked;
    	}
    
    	public void setText(String text) {
    		this.text = text;
    	}
    
    	public String getState() {
    		return state;
    	}
    
    	public void setState(String state) {
    		this.state = state;
    	}
    }

    表结构如图

    首先查询所有parentid为NONE的数据(测试数组件的ID为null)然后同时判断该节点下是否有子节点,
    如果有则状态是关闭状态
    当继续展开树的时候 会将该ID值传入,然后查询该节点的子节点。


    action方法实现

    private List<TestTreeNode> testTreeNodes = new ArrayList<TestTreeNode>();
    private String id;// 树组件使用的ID
    
    public String testTree() {
    	try {
    		List<Map<String,Object>> list = aloneIMP.getTreeNodes(id).search().getResultList();
    		for(Map<String,Object> m:list){
    			//判断是否有子节点
    			List<Map<String,Object>> isHasChildren = aloneIMP.getTreeChildren(null).addUserWhere(" and parentid ='"+(String)m.get("ID")+"'").search().getResultList();
    			if(isHasChildren.size()==0){
    				testTreeNodes.add(new TestTreeNode((String)m.get("ID"),(String)m.get("NAME"),"open",false));	
    			}else{
    				testTreeNodes.add(new TestTreeNode((String)m.get("ID"),(String)m.get("NAME"),"closed",false));
    			}
    					
    		}
    	} catch (SQLException e) {
    		e.printStackTrace();
    	}
    	return SUCCESS;
    }

    此方法不具公共性,是自己的一些封装实现。主要是如何进行查询节点,

    getTreeNodes()的实现方法为:

    @Override
    public DataQuery getTreeNodes(String id) {
    	if(id==null){
    		dbQuery = DataQuery
    		.init(
    				query,
    				"hh_message_type",
    				"ID,STATE,PARENTID,NAME,TITLE").addUserWhere(" and parentid = 'NONE'");
    	}else{
    		dbQuery = DataQuery
    		.init(
    				query,
    				"hh_message_type",
    				"ID,STATE,PARENTID,NAME,TITLE").addUserWhere(" and parentid = '"+id+"'");
    	}
    	
    	return dbQuery;
    }

    getTreeChildren()的实现方法为:

    @Override
    	public DataQuery getTreeChildren(DataQuery query) {
    		DataQuery dbQuery = DataQuery
    			.init(
    					query,
    					"hh_message_type",
    					"ID,STATE,PARENTID,NAME,TITLE");
    		return dbQuery;
    	}

    实现效果图为:



    修正版参见:EasyUI实现异步加载tree(整合Struts2)

    项目源码下载:http://download.csdn.net/detail/itmyhome/7852021


  • 相关阅读:
    c# 4.0新功能--隐式类型
    常用的sql语句记录
    算法学习-回文数判断
    算法学习-两数之和
    RSA加密(前端js)和MD5加密(后台)同时使用实例
    layer父页获取弹出层输入框里面的值
    关于checkbox的全选和反选实例
    jQuery实用小技巧-获取选中的的下拉框和返回头部滑动动画
    jQuery实用小技巧--输入框文字获取和失去焦点
    得到网站下的文件虚拟路径的方法
  • 原文地址:https://www.cnblogs.com/itmyhome/p/4131393.html
Copyright © 2011-2022 走看看