grails,groovy無限樹遞歸

def treegrid(){
       def res=injectNews(0)
       render res as JSON
    }
    def injectNews={pid->
        def  mkInstance
        def result=[]
        if(pid==0){//判斷是不是爲0如果爲0就是上一個方法傳過來的如果不是就是遞歸
            mkInstance=WXslwMk01.executeQuery("from WXslwMk01 where (name='新聞資訊' or name='基層黨建' or name='弘揚正能量' or name='社區文化' or name='就業服務' or name='居民委員會' or name='絲路話語'  or name='志願者風采') and sfjy=false ")
        }else{
            mkInstance=WXslwMk01.findAllByParentAndSfjy(pid,false)
        }
        mkInstance.each {mk->
            def tMap=[:];
            def tMap1=[:];
            def tFind=WXslwMk01.findAllByParentAndSfjy(mk?.id,false)//查詢判斷還沒有下一級
            /*
            * 重新定義map鍵,
            * 不定義可能跟jquery裏的關鍵字衝突發生未知的錯誤
            *TypeError: row is null   row.state="open";
            * too much recursion;
            * */
            tMap1.idname=mk?.id
            tMap1.pId=mk?.parent
            tMap1.mkName=mk?.name
            tMap1.sfjy=mk?.sfjy
            tMap.putAll(tMap1);
            tMap.state=tFind?"closed":"open";//如果有就表示是父級他的狀態就是closed不然就是子級狀態就是open
            if(tFind){//判斷有沒有下一級了就了就繼續遞歸
                tMap.children=injectNews(mk?.id);
            }
            result.add(tMap);
        }
        return result;



    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章