读书人

麻烦帮小弟我看看小弟我的dojo的tre

发布时间: 2012-02-07 17:45:36 作者: rapoo

麻烦帮我看看,我的dojo的tree怎么不好使?谢谢!
我是想实现懒装入,在树刚展开的时候只显示第一层节点,等到要展开具体的第二层节点的时候再到后台去读数据。现在只能展开第一层节点,点击展开节点的那个加号没有反应。麻烦帮我看看是怎么回事。谢谢!

jsp页面如下

<script type= "text/javascript ">

dojo.require( "dojo.widget.* ");
dojo.require( "dojo.widget.TreeV3 ");
dojo.require( "dojo.widget.TreeNodeV3 ");
dojo.require( "dojo.widget.TreeLinkExtension ");
dojo.require( "dojo.widget.TreeSelectorV3 ");
dojo.require( "dojo.widget.TreeRPCController ");
dojo.require( "dojo.widget.TreeLoadingControllerV3 ");
dojo.require( "dojo.widget.TreeContextMenu ");
dojo.require( "dojo.widget.TreeDocIconExtension ");
dojo.require( "dojo.widget.TreeDisableWrapExtension ");
dojo.hostenv.writeIncludes();
</script>

<style>
.myCssClass {
font-family: Arial, Helvetica, sans-serif;
font-size: 18px;
font-style: italic;
}


.TreeIconTreeNonLeafIconnodetype1{
background-image: url( ' <%=request.getContextPath()%> /images/mailbox1.gif ');
}

.TreeIconTreeLeafIconnodetype1{
background-image: url( ' <%=request.getContextPath()%> /images/closed.gif ');
}

</style>
</head>
<body>
<script type= "text/javascript ">


var controller = dojo.widget.createWidget( "TreeLoadingControllerV3 ",
{widgetId: "controller ", DNDController: "create ",
RPCUrl: " <%=request.getContextPath()%> /getMenuTree.do "});
var link = dojo.widget.createWidget( "TreeLinkExtension ", {widgetId: "link "});
var docIcons = dojo.widget.createWidget( "TreeDocIconExtension ", {widgetId: "docIcons "});
var disableWrap = dojo.widget.createWidget( "TreeDisableWrapExtension ", {widgetId: "disableWrap "});
var treeSelector = dojo.widget.createWidget( "TreeSelectorv3 ", {widgetId: "treeSelector "});
dojo.event.topic.subscribe( "nodeSelected ", "treeSelectFired ");


dojo.addOnLoad(function(){

//var kw = {url:controller.rpcUrl, sync: "true "};
//controller.runRpc(kw);

//controller.DNDController = "create ";


var treeNodes = <%=request.getAttribute( "strMenus ")%> ;
/*

var treeNodes = [
{ "isFolder ":false, "title ": "title1 ", "tree ": "rootTree ", "objectId ": "775161 ", "widgetId ": "775161 "},
{ "isFolder ":true, "title ": "title2 ", "tree ": "rootTree ", "objectId ": "775162 ", "widgetId ": "775162 "} ];
*/



var tree = dojo.widget.createWidget( "TreeV3 ",
{widgetId: "menuTree ", listeners: [controller.widgetId,treeSelector.widgetId, link.widgetId, docIcons.widgetId, disableWrap.widgetId],
"toggle ": "wipe ", DNDMode: "between " });
/**
lazy initialization is in effect
only root-level widgets will be created
*/
//controller.loadProcessResponse(tree, str);
tree.setChildren(treeNodes);
//controller.expandToLevel(tree, 1);

document.body.appendChild(tree.domNode);

});


function treeSelectFired() {
alert( "treeSelectFired ");
// get a reference to the treeSelector and get the selected node
var treeSelector = dojo.widget.manager.getWidgetById( 'treeSelector ');
var treeNode = treeSelector.selectedNodes[0];

// get a reference to the songDisplay div

var hostDiv = document.getElementById( "songDisplay ");
var isFolder = treeNode[ 'isFolder '];
if ( !isFolder) {
var song = treeNode[ 'title '];
var url = treeNode[ 'url '];
//treeNode.object = { href: 'http://www.google.com/ ' };
link(url);
} else {
}

}

function link(url){
//alert(url);
if(url){
parent.rightFrame.location.href=url;
}
}

function init() {

//get a reference to the treeSelector
var treeSelector = dojo.widget.manager.getWidgetById( 'treeSelector ');


//connect the select event to the function treeSelectFired()
dojo.event.connect(treeSelector, 'select ', 'treeSelectFired ');
}

dojo.addOnLoad(init);
</script>

</body>
</html>

java代码如下
List <Menu> menus = getMenus();
JSONArray result = new JSONArray();
if (menus != null && menus.size() > 0) {
ListIterator <Menu> itMenus = menus.listIterator();
while (itMenus.hasNext()) {
Menu m = itMenus.next();
try {
JSONObject jsonMenuObject = new JSONObject();
jsonMenuObject.put( "title ", m.getName());


/*
jsonMenuObject.put( "childIconSrc ", "../images/ "
+ m.getImage());
*/
jsonMenuObject.put( "nodeDocType ", m.getImage());
jsonMenuObject.put( "isFolder ", mgr.hasChildren(m));
jsonMenuObject.put( "widgetId ", m.getNumber());
jsonMenuObject.put( "objectId ", m.getNumber());
/*
JSONArray children = getChildren(m);
if (children.length() > 0){
jsonMenuObject.put( "isFolder ", true);
jsonMenuObject.put( "children ", children);
}else{
jsonMenuObject.put( "isFolder ", false);
jsonMenuObject.put( "url ", m.getAction());
}
*/
result.put(jsonMenuObject);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
strMenus = result.toString();

// strMenus = "[{title: \ "Node 1\ " ,children: [{title: \ "Node
// 1.1\ "},{title: \ "Node 1.2\ "} ]}, {title: \ "Node 2\ " }] ";
/*
HttpServletResponse response = getResponse();
response.setContentType( "text/json; charset=gb2312 ");
PrintWriter out = response.getWriter();

System.out.println(strMenus);
out.write(strMenus);
*/
System.out.println(strMenus);
return SUCCESS;

[解决办法]
这个我不是很懂,帮顶吧~

读书人网 >Java Web开发

热点推荐