用到的插件式 dhtmlx, xml为
<?xml version='1.0' encoding='iso-8859-1'?>
<tree id="0">
<item text="My Computer" id="1" child="1" im0="my_cmp.gif" im1="my_cmp.gif" im2="my_cmp.gif" call="true" select="yes">
<userdata name="system">true</userdata>
<item text="Floppy (A:)" id="11" child="0" im0="flop.gif" im1="flop.gif" im2="flop.gif"/>
<item text="Local Disk (C:)" id="12" child="0" im0="drv.gif" im1="drv.gif" im2="drv.gif"/>
</item>
<item text="Recycle Bin" id="4" child="0" im0="recyc.gif" im1="recyc.gif" im2="recyc.gif"/>
</tree>
controller中代码为:
def KnowledgeTree = {
StringBuffer sb = new StringBuffer();
response.setCharacterEncoding("UTF-8")
response.setContentType("text/xml");
def loginUser =UtilsController.getLoginUser(session)
if(loginUser){
def c=KnowledgeType.createCriteria()
def myKnowledge=c.list(){
and{
isNull("parent")
}
order("dateCreated","desc")
}
try{
sb.append(treeXML(myKnowledge))
}catch (Exception e) {
e.printStackTrace()
}
}else{
sb.append(nologinTreeXML ())
}
render sb.toString()
}
def knowledgeType_tree={
}//建页面时建立knowledgeType_tree。从这个页面调用def knowledgeType_listTree这个方法
def knowledgeType_listTree = {
StringBuffer sb = new StringBuffer();
response.setCharacterEncoding("UTF-8")
response.setContentType("text/xml");
def loginUser = UtilsController.getLoginUser(session)
if(loginUser){
def c=KnowledgeType.createCriteria()
def myKnowledge=c.list(){
and{
isNull("parent")
}
order("dateCreated","desc")
}
try{
sb.append(treeXML (myKnowledge))
}catch (Exception e) {
e.printStackTrace()
}
}else{
sb.append(nologinTreeXML ())
}
render sb.toString()
}
private String treeXML (def knowledgeType) {
response.setCharacterEncoding("UTF-8")
response.setContentType("text/xml");
StringBuffer sb = new StringBuffer();
sb.append("<?xml version='1.0' encoding='UTF-8'?>")
sb.append('<tree id="0">')
try{
for(KnowledgeType ud:knowledgeType){
sb.append(makeKnowledgeTreeXML(ud))
}
}catch (Exception e) {
e.printStackTrace()
}
sb.append('</tree>')
return sb.toString()
}
private String nologinTreeXML () {
response.setCharacterEncoding("UTF-8")
response.setContentType("text/xml");
StringBuffer sb = new StringBuffer();
sb.append("<?xml version='1.0' encoding='UTF-8'?>")
sb.append('<tree id="0">')
sb.append("<item text='\u4F60\u767B\u5F55\u5DF2\u7ECF\u8D85\u65F6!' id='no_login' aCol='red' />")
sb.append('</tree>')
return sb.toString()
}
private String makeKnowledgeTreeXML(KnowledgeType department){
def result = ""
if(department.childrens){
result='<item text="' + department.sortname + '" id="' + department.id + '" im0="folderClosed.gif" >'
def c=KnowledgeType.createCriteria()
def children=c.list(){
eq("parent", department)
order("dateCreated","desc")
}
for(KnowledgeType ud:children){
if(ud!=department){
result+=makeKnowledgeTreeXML(ud);
}
}
result+='</item>'
}else{
if(!department.parent&&!department.childrens){
result='<item text="' + department.sortname + '" id="' + department.id + '" im0="folderClosed.gif" ></item>'
}else{
result += '<item text="' + department.sortname + '" id="' + department.id + '" />'
}
}
return result;
}
}
gsp页面:tree.loadXML("${request.getContextPath()}/knowledgeType/knowledgeType_listTree?"+ new Date().valueOf());
分享到:
相关推荐
Grails Grails Grails Grails Grails
Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南
Grails模块架构图
Grails1.1中文文档
Grails入门指南中文pdf -- 针对grails1.0.4更新,附加idea8 开发grails的流程
Grails项目的应用越来越多,而对于初学者来说,在Eclipse下搭建Grails项目是一个难题,这个文档将教会你如何搭建Grails项目,希望对你有所帮助。
grails-2.1.zip.001
grails+Xfire webservice
Grails 中文 参考手册
详细讲解grails开发环境配置。 详细讲解grails连接mysql数据库,crud开发
grails3.2.8 part1
在学习任何东西之前,最重要的是培养兴趣,Groovy世界最耀眼的技术之一--Grails相信大家早已耳闻,我将通过Grails实战系列文章 向您展现Grails的迷人风采,使您感受到Grails的魅力,以至疯狂地爱上Grails,并坠入...
grails grails入门经典 grails入门 grails例子 grails资料 通过自学一点点积累起来的,相信对你有帮助的。
Grails专为下一代JavaWeb应用程序而设计的框架,其借助于Groovy动态语言,使Web开发变得简单而方便。Grails尽量为更多现有的Java项目创建一个全面的框架(不仅局限于视图处理),这和当前一些Java框架提供给用户的一...
grails-2.3.6
Grails 1.3.7英文版官方参考手册,学习Grails的权威指南
grails参考文档 The Grails Framework - Reference Documentation Authors: Graeme Rocher, Marc Palmer Version: 1.0.3
grails 中文文档+grails-fckeditor-0.9.5.zip插件