Ext tree + webwork + spring + hibernate 的实现

处理树最主要是如何获得树的子节点,我通过ajax调用action的方式获得了树的下级节点,返回json字符串.

[b]以下是获得部门树的部分代码[/b]

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;
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值