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


  • 相关阅读:
    webdav srs相关
    How To Configure WebDAV Access with Apache on Ubuntu 14.04
    ubuntu 编译lighttpd
    srs编译及推流测试
    Compile pciutils (lspci, setpci) in Windows x86,在 Windows x86 平台下编译 pciutils (lspci, setpci)
    mingw MSYS2 区别
    Qt之美(三):隐式共享
    Qt之美(二):元对象
    Qt之美(一):d指针/p指针详解
    C++的栈空间和堆空间
  • 原文地址:https://www.cnblogs.com/itmyhome/p/4131393.html
Copyright © 2011-2022 走看看