`
jacally
  • 浏览: 761831 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Ext tree + webwork + spring + hibernate 的实现

    博客分类:
  • Ajax
阅读更多
处理树最主要是如何获得树的子节点,我通过ajax调用action的方式获得了树的下级节点,返回json字符串.

以下是获得部门树的部分代码

ext js 创建树
 		var Tree = Ext.tree;
		    
	    deptTree = new Tree.TreePanel({
	        el : elementId,
	        autoScroll:true,
	        animate:true,
	        enableDD:true,
	        containerScroll: true, 
	        loader: new Tree.TreeLoader({
	            dataUrl: CONTEXT_PATH + "/depts/deptTree.do",
	            baseParams: filter
	        })
	    });	
	    
	    // set the root node
	    root = new Tree.AsyncTreeNode({
	        text: rootDesc,
	        draggable:false,
	        id:'-1'
	    });
	    deptTree.setRootNode(root);
	    
	    // render the deptTree
	    deptTree.render();
	    root.expand();	


ext js 重新加载树
    /**
		 * 重新加载树
		 * 
		 * @param {f}
		 *          f 过滤树的条件 如:{placeid:'xxxxx'}
		 */			
		reload : function (f){
			filter = f;

			var loader = deptTree.getLoader();
			deptTree.on('beforeload', function(){ 
					loader.dataUrl = loader.dataUrl ;
					loader.baseParams = filter;
			});
			root.reload();	
		}


XWork.xml
		<action name="deptTree" method="getSubNodes"
			class="cn.org.coral.biz.depts.view.deptExtAction">
		</action>	


Action(Webwork)
/**  
 * ExtTree获得下级节点数据  
 * @return  
 */  
 public String getSubNodes() throws Exception {   
       
    this.getHttpServletResponse().setCharacterEncoding("UTF-8");   
    PrintWriter out = this.getHttpServletResponse().getWriter();   
    String jsonString = service.getSubNodes(getFilter());   
    out.print(jsonString);   
       
    return null;   
}  


Service(通过Spring管理)
	/**
	 * ExtTree获得下级节点数据
	 * @param filter
	 * @return
	 */
	public String getSubNodes(Map filter) {
    	JSONArray josnArray = new JSONArray();
    	List<ExtTreeNode> nodes = manager.getSubNodes(filter);
    	if(nodes !=null && !nodes.isEmpty()){
    		josnArray = JSONArray.fromObject(nodes);
    	}
    	return josnArray == null ? "":josnArray.toString();
	}


自定义ExtTreeNode 树节点对象

package cn.org.coral.core.ext.objects;

import java.io.Serializable;

import org.directwebremoting.annotations.DataTransferObject;

/**
 * ExtTreeNode对象
 * @author Lib
 *
 */
@DataTransferObject
public class ExtTreeNode implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public ExtTreeNode(String id, String text, String cls, boolean leaf) {
		super();
		this.id = id;
		this.text = text;
		this.cls = cls;
		this.leaf = leaf;
	}	
	
	private String id;
	private String text;
	private String cls;
	private boolean leaf;
	/**
	 * @return the cls
	 */
	public String getCls() {
		return cls;
	}
	/**
	 * @param cls the cls to set
	 */
	public void setCls(String cls) {
		this.cls = cls;
	}
	/**
	 * 节点的id 
	 * @return the id
	 */
	public String getId() {
		return id;
	}
	/**
	 * 节点的id 
	 * @param id the id to set
	 */
	public void setId(String id) {
		this.id = id;
	}
	/**
	 * 是否是叶子节点
	 * @return the leaf
	 */
	public boolean getLeaf() {
		return leaf;
	}
	/**
	 * 是否是叶子节点
	 * @param leaf the leaf to set
	 */
	public void setLeaf(boolean leaf) {
		this.leaf = leaf;
	}
	/**
	 * 节点显示名
	 * @return the text
	 */
	public String getText() {
		return text;
	}
	/**
	 * 节点显示名
	 * @param text the text to set
	 */
	public void setText(String text) {
		this.text = text;
	}

}

3
0
分享到:
评论
5 楼 dingchao.lonton 2011-03-08  
确实要用递归来获得一颗树,这是最重要的部分
4 楼 我奋斗 2008-12-03  
最关键的东西没写出来,比如你如何得到树的结构,是采用递归算法呢,还是用其他的办法。总之,参考价值太小。
3 楼 laitaogood 2008-03-14  
呵呵,我正想用SSH+EXT做一个薪酬管理系统作为毕业设计呢,楼主的文章给我提供了很多灵感啊,谢谢,楼主了
2 楼 jacally 2008-03-08  
/** 
* 设置过滤条件,得到适合的生成树的数据 
* @return 
*/ 
public Map getFilter() { 
  Map filter = new HashMap(); 
  //按照上级节点的ID过滤子节点 
  filter.put("parentid", getNode()); 
  //也可以加入其它需要的过滤条件 
  filter.put("placeid", getPlaceid()); 
  return filter; 
}
1 楼 wf_7758520 2008-03-06  
请问filter是什么类型是在哪设置的,还有就是
String jsonString = service.getSubNodes(getFilter());      中getFilter()方法的实现是什么?

相关推荐

Global site tag (gtag.js) - Google Analytics