3、建立Tree
SELEctor事件处理函数
function tree
SELEctFired()
{
// get a reference to the tree
SELEctor and get the
SELEcted node
var tree
SELEctor = dojo.widget.manager.getWidgetById('tree
SELEctor'
);
var treeNode = tree
SELEctor.
SELEctedNode;
// get a reference to the songDisplay div
var hostDiv = document.getElementById("songDisplay"
);
var isFolder = treeNode['isFolder'];
//alert(isFolder
);
if ( !isFolder)
{
var song = treeNode['
title'];
var url = treeNode['url'];
link(url
);
}
else {
}
}
4、将
SELEct事件处理函数关联到tree
SELEctor
function init()
{
//get a reference to the tree
SELEctor
var tree
SELEctor = dojo.widget.manager.getWidgetById('tree
SELEctor'
);
//connect the
SELEct event to the function tree
SELEctFired()
dojo.event.connect(tree
SELEctor,'
SELEct','tree
SELEctFired'
);
}
dojo.addOnLoad(init
);
二、主要java代码及数据结构
1、Gnmk.java中tree的属性
private String id;
private String gnmkdm; //功能模块代码
private String gnmksm; //功能模块说明
private String gnmktb; //功能模块图标
private String gnmkl
j; //功能模块路径
private String gnmkm
c; //功能模块名称
private String gnmks
j; //功能模块上级代码
private String gnmkbz; //功能模块标志(‘N’为叶节点)
2、
HSQLDB内存数据库加载SQL(db.sql)
CREATE
TABLE GNMK (ID
VARCHAR,GNMKDM
VARCHAR,GNMKMC
VARCHAR,GNMKLJ
VARCHAR,GNMKTB
VARCHAR,GNMKBZ
VARCHAR,GNMKSJ
VARCHAR);
INSERT
INTO GNMK
VALUES ('d098a59f0b765c30010b765d6b780001','01','一级目录1',null,'syste
m.gif','Y','
);
INSERT
INTO GNMK
VALUES ('d098a59f0b765e6
8010b765fda830001','0101','二级目录1','cxtjAction.do','N','01'
);
INSERT
INTO GNMK
VALUES ('d098a59f0b765e6
8010b765fda830001','0102','二级目录2','01'
);
INSERT
INTO GNMK
VALUES ('d098a59f0b765c30010b765d6b780002','02','一级目录2','
);
INSERT
INTO GNMK
VALUES ('d098a59f0b765e6
8010b765fda830002','0201','02'
);
INSERT
INTO GNMK
VALUES ('d098a59f0b765e6
8010b765fda830002','0202','020201','三级目录1','0202'
);
INSERT
INTO GNMK
VALUES ('d098a59f0b765e6
8010b765fda830002','020202','三级目录2','0202'
);
3、TreeServlet .java主要代码,在getGnmkByParent(
String gnmksj)方法中可以实现自己的业务,DEMO中使用GnmkDAO
public
class TreeServlet
extends httpServlet
{
private
static
final
long serialVersionUID = 1L;
protected
void doGet(
httpServlet
request
request,
httpServletResponse respons
E)
throws ServletException,IOException
{
String action =
request.getParameter("action"
);
Syste
m.out.println("action b=>" + action
);
Syste
m.out.println("action b=>" + action
);
String data =
request.getParameter("data"
);
if (action.equalsIgnoreCase("getChildren"))
{
JSONTokener jsonTokener =
new JSONTokener(data
);
JSONOb
ject jsonOb
ject = (JSONOb
ject) jsonTokener.nextValue(
);
JSONOb
ject parentNodeOb
ject = (JSONOb
ject) jsonOb
ject.get("node"
);
response.setContentType("text/json; charset=gb2312"
);
PrintWriter out = response.getWriter(
);
out.write(getChildren(parentNodeOb
ject)
);
}
else {
}
}
private String getChildren(JSONOb
ject parentNodeOb
ject)
{
JSONArray result =
new JSONArray(
);
String parentOb
jectId = parentNodeOb
ject.get
String("ob
jectId"
);// id 唯一
//
String parentWidgetId = parentNodeOb
ject.get
String("widgetId"
);// dm
parentOb
jectId = parentOb
jectId.equalsIgnoreCase("root") ? ""
: parentOb
jectId;
Syste
m.out.println("parentOb
jectId=>" + parentOb
jectId
);
// 获取子功能模块
List listGnmk =
this.getGnmkByParent(parentOb
jectId
);
Syste
m.out.println("listGnmk=>" + listGnmk.size()
);
if (listGnmk
!=
null)
{
Iterator itGnmk = listGnmk.iterator(
);
while (itGnmk.hasNext())
{
Gnmk qxgnmk = (Gnmk) itGnmk.next(
);
try {
JSONOb
ject jsonGnmkOb
ject =
new JSONOb
ject(
);
String gnmkbz = qxgnmk.getGnmkbz(
);
Boolean isFolder = gnmkbz.equalsIgnoreCase("Y") ?
true
:
false
jsonGnmkOb
ject.put("
title",qxgnmk.getGnmkmc()
);
jsonGnmkOb
ject.put("isFolder",isFolder
);
jsonGnmkOb
ject.put("widgetId",qxgnmk.getGnmkdm()
);
jsonGnmkOb
ject.put("ob
jectId",qxgnmk.getGnmkdm()
);
jsonGnmkOb
ject.put("chil
DiconSrc","images/"
+ qxgnmk.getGnmktb()
);
jsonGnmkOb
ject.put("url",qxgnmk.getGnmklj()
);
result.put(jsonGnmkOb
ject
);
}
catch (JSONException
E) {
e.printStackTrace(
);
}
}
}
return result.to
String(
);
}
private List getGnmkByParent(
String gnmksj)
{
GnmkDAO gnmkDao =
new GnmkDAO(
);
return gnmkDao.getGnmkByParent(gnmksj
);
}
}
三、关于DEMO的其它配置说明
1、实现javax.servlet.ServletCo
ntextListener接口的co
ntexTinitialized方法来加载
HSQLDB及其数据,Co
ntextListener.java主要代码
public
void co
ntexTinitialized(ServletCo
ntextEvent event)
{
try {
// load the driver
Clas
s.forName("org.
HSQLdb.jdbcDriver"
);
// create the table and add sample data
InputStreamReader in =
new InputStreamReader(getClass().getClassLoader().get
resourceAsStream("db.sql")
);
BufferedReader reader =
new BufferedReader(in
);
DBUtil
s.set
updatabase(reader
);
}
catch (Clas
snotFoundException
E) {
e.printStackTrace(
);
}
}
2、web.xml相关配置
dojo.sample.ContextListener
listener-class> >
描述: DEMO截图
大小: 8.5 KB
dojotree.rar(2.7 MB)
描述: DEMO源代码
下载次数: 4353
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
IBM Rational软件开发简化到底
本文转自
http://www.javaeye.com/topic/26240
版权声明:本文为博主原创文章,未经博主允许不得转载。