treevar="org"items="orgs"builder="extTree">
nodeid="${org.id}"parentId="${org.parentId}"name="${org.name}"
icon="${orgIcon}"
openIcon="${userIcon}"
action="javascript:
showSelectedNode()"
/>
tree>
Tree标签属性
属性名称
属性类型
备注
var
String
用于保存items元素
items
String
是业务数据列表对象的key
builder
String
用于构造树的builder对象(builder是什么下面会有介绍),可以选值有
[XTree,XLoadTree,RadioXTree,RadioXLoadTree,CheckXTree,CheckXLoadTree,CompositeXTree,CompositeXLoadTree,ExtTree,ExtLoadTree]
如果这些builder不能满足您的需求,你可以指定一个class,只要指定class实现了WebTreeBuilder接口即可.
comparator
java.util.Comparator
排序器,用来对树的节点排序.节点类型为
net.jcreate.e3.tree.support.WebTreeNode
sortProperty
String
排序属性名称,默认是按节点的名称来排序的,如果要使用别的属性排序,则需要设置该值.:
如果你的业务对象有排序属性时,则需要指定,如sortProperty=”orgOrder”.注意:
如果设置了comparator属性,那么该值无效.
reverse
boolean
是否反向排序,默认false
❑node标签负责将业务对象转换成树节点对象.nodetaglib包含的常规属性有
属性名称
属性类型
备注
id
String
节点id
parentId
String
父亲节点id
name
String
节点名称(标题)
icon
String
节点图标
openIcon
String
节点展开时的图标
action
String
是单节点时的动作,可以是一个url也可以是javascript函数.如果是函数,则必须以javascript:
开头.如:
action=”javascript:
alert(‘demo’)”
nodeProperty
String
用于设置节点类型,有效值radio,checkbox和none,nodeProperty的默认值是none,表示节点旁边没有其他控件,为radio时,节点旁边会有个单选按纽,为checkbox时,节点旁边会有个checkbox按纽.
selected
boolean
是否选种节点,只有当nodeProperty为radio或checkbox时才有效,默认值为false
disabled
boolean
是否禁用节点,默认值为false
value
String
节点帮定的值,只有当nodeProperty为radio或checkbox时才有效,默认值为空(长度为0的字符串)
dragable
boolean
节点是否允许拖动,默认值为false
dropable
boolean
是否允许停放拖动的节点,默认值为false
添加JAR到classpath中
现在来看调用API的使用方式.新建一个web项目,把Lib文件清单中的jar全部添加到classpath中
业务数据对象
packagenet.jcreate.e3.samples.tree;
publicclassOrg{
privateStringid;
privateStringparentId;
privateStringname;
privateintviewOrder;
publicOrg(){
}
publicOrg(StringpId,StringpParentId,StringpName,intpViewOrder){
this.id=pId;
this.parentId=pParentId;
this.name=pName;
this.viewOrder=pViewOrder;
}
publicintgetViewOrder(){
returnviewOrder;
}
publicvoidsetViewOrder(intviewOrder){
this.viewOrder=viewOrder;
}
publicStringgetId(){
returnid;
}
publicvoidsetId(Stringid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetParentId(){
returnparentId;
}
publicvoidsetParentId(StringparentId){
this.parentId=parentId;
}
}
控制器Servlet
packagenet.jcreate.e3.samples.tree;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importnet.jcreate.e3.tree.Node;
importnet.jcreate.e3.tree.TreeDirector;
importnet.jcreate.e3.tree.TreeModel;
importnet.jcreate.e3.tree.UncodeException;
importnet.jcreate.e3.tree.UserDataUncoder;
importnet.jcreate.e3.tree.support.AbstractWebTreeModelCreator;
importnet.jcreate.e3.tree.support.DefaultTreeDirector;
importnet.jcreate.e3.tree.support.WebTreeBuilder;
importnet.jcreate.e3.tree.support.WebTreeNode;
importnet.jcreate.e3.tree.xtree.XTreeBuilder;
publicclassTestServletextendsHttpServlet{
protectedvoidservice(HttpServletRequestpRequest,HttpServletResponsepResponse)throwsServletException,IOException{
//业务数据
Listorgs=newArrayList();
OrgjcjtOrg=newOrg("001",null,"进创集团",1);
OrgjcrjOrg=newOrg("001001","001","进创软件",1);
OrgxrjOrg=newOrg("0010010011","001001","X软件公司",1);
OrgyrjOrg=newOrg("0010010012","001001","Y软件公司",2);
OrgzrjOrg=newOrg("0010010013","001001","Z软件公司",3);
orgs.add(jcjtOrg);
orgs.add(jcrjOrg);
orgs.add(xrjOrg);
orgs.add(yrjOrg);
orgs.add(zrjOrg);
//业务数据解码器,从业务数据中分解出id和parentid
UserDataUncoderorgUncoder=newUserDataUncoder(){
publicObjectgetID(ObjectpUserData)throwsUncodeException{
Orgorg=(Org)pUserData;
returnorg.getId();
}
publicObjectgetParentID(ObjectpUserData)throwsUncodeException{
Orgorg=(Org)pUserData;
returnorg.getParentId();
}
};
//Tree模型构造器,用于生成树模型
AbstractWebTreeModelCreatortreeModelCreator=
newAbstractWebTreeModelCreator(){
//该方法负责将业务数据映射到树型节点
protectedNodecreateNode(ObjectpUserData,UserDataUncoderpUncoder){
Orgorg=(Org)pUserData;
WebTreeNoderesult=newWebTreeNode(org.getName(),"org"+org.getId());
//action是点击按纽执行的方法.可以是url,或者javascript函数
result.setAction("javascript:
alert('"+org.getName()+"')");
returnresult;
}
};
treeModelCreator.init(pRequest);
TreeModeltreeModel=treeModelCreator.create(orgs,orgUncoder);
TreeDirectordirector=newDefaultTreeDirector();//构造树导向器
WebTreeBuildertreeBuilder=newXTreeBuilder();//构造树Builder
treeBuilder.init(pRequest);
director.build(treeModel,treeBuilder);//执行构造
StringtreeScript=treeBuilder.getTreeScript();//获取构造树的脚本
pRequest.setAttribute("treeScript",treeScript);//保存到request,以便页面使用
pRequest.getRequestDispatcher("XTree.jsp").forward(pRequest,pResponse);
}
}
上面代码构造是普通树,如果要构造带checkbox/radiobox的树,只需要将
WebTreeBuildertreeBuilder=newXTreeBuilder()
这行代码换成
WebTreeBuildertreeBuilder=newCheckXTreeBuilder()
或
WebTreeBuildertreeBuilder=newRadioXTreeBuilder()
即可
JSP页面
命名为XTree.jsp,放在web应用跟目录下(WEB-INF所在目录);
%@pagecontentType="text/html;charset=utf-8"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">