E3 TREE 开发准备及简单树实现代码。

一、导入jar:

commons-collections-2.1.1.jar

commons-logging.jar

E3-Base.jar

E3-TemplateEngine.jar

E3-Tree.jar

log4j.jar

velocity-1.4.jar

二、配置web监听(解压导出E3所需资源,该步骤可选,在tomcat5.5版本需要)

web.xml:

     <listener>
        <listener-class>
            net.jcreate.e3.commons.resource.loader.LoadResourcesListener
        </listener-class>
    </listener>
    <listener>
        <listener-class>
            net.jcreate.e3.tree.loader.LoadResourcesListener
        </listener-class>
    </listener>

三、业务数据

配置实体bean。至少包括三个属性:id,parentid,name。变量名可以随便指定,而且支持字符和数据类型。

public class TreeNode {
private String id;
private String title;
private String parentId;
private String url;

set get方法。
}

四 、核心的servlet代码:

// 模拟数据(E3 TREE所有的业务数据都放在List集合里,id,parentid,title不能为空,只有根节点的parentid可以为null)
List treeNodes = new ArrayList();
TreeNode root = new TreeNode();
root.setId("000000");
root.setTitle("根节点");
treeNodes.add(root);
for(int i=0; i<10; i++){
TreeNode node = new TreeNode();
node.setId(String.valueOf(i));
node.setParentId("000000");
node.setTitle("节点"+i);
node.setUrl("url");
treeNodes.add(node);
}
TreeNode leaf = new TreeNode();
leaf.setId("leaf");
leaf.setParentId(String.valueOf(1));
leaf.setTitle("叶子1");
treeNodes.add(leaf);
// 业务数据解码器,从业务数据中分解出ID和PARENTID
UserDataUncoder uncoder = new UserDataUncoder(){
public Object getID(Object arg0) throws UncodeException {
TreeNode node = (TreeNode) arg0;
return node.getId();
}
public Object getParentID(Object arg0) throws UncodeException {
TreeNode node = (TreeNode) arg0;
return node.getParentId();
}
};
// 模型构造器,用于生成树模型
AbstractWebTreeModelCreator modelCreator = new AbstractWebTreeModelCreator(){
protected Node createNode(Object arg0, UserDataUncoder arg1) {
TreeNode node = (TreeNode) arg0;
WebTreeNode result = new WebTreeNode(node.getTitle(),"node"+node.getId());
if(node.getUrl() != null && !node.getUrl().equals("")){
result.setAction("javascript: doAction('"+node.getUrl()+"')");
}
return result;
}
};
modelCreator.init(request);
// 创建树模型(模型构造器在解码器的辅助下,生成树模型)
TreeModel treeModel = modelCreator.create(treeNodes, uncoder);
// 创建导向器
TreeDirector director = new DefaultTreeDirector();
// 树构造器
WebTreeBuilder treeBuilder = new XTreeBuilder(); // XTtre风格
//WebTreeBuilder treeBuilder = new ExtTreeBuilder(); // ExtTree风格
treeBuilder.init(request);
// 导向器利用树模型和树构造器创建脚本
director.build(treeModel, treeBuilder);
String treeScript = treeBuilder.getTreeScript();


request.setAttribute("treeScript", treeScript);
request.getRequestDispatcher("/index.jsp").forward(request, response);

jsp:

<script type="text/javascript">
function doAction(url){
location.href = url;
}
</script>
  </head>
  
  <body>
    ${treeScript } 
  </body>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值