麻烦帮我看看,我的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;
[解决办法]
这个我不是很懂,帮顶吧~