首页 > 其他 > 详细

使用freemarker宏定义使用树形目录的展示

时间:2015-09-02 17:28:19      阅读:610      评论:0      收藏:0      [点我收藏+]

使用freemarker宏定义使用树形目录的展示

1、效果展示如下

技术分享

技术分享


2、前端代码

<div class="kcmenu">
    <div class="sidebar-wrapper" id="sidebar-wrapper">
        <div class="title"><span class="pull-left ti-arrow-circle-left"></span>课程目录</div>
        <div id="moremenu">
            <ul class="kcnav">
                <li><a style="cursor: pointer" onclick="searchCourseByCatalogId(‘0‘)">全部课程</a></li>
                [#list catalogList?sort_by("catalogOrderNo") as catalog]
                    <li>
                        <a style="cursor: pointer" [#if !catalog.sonCatalogs?? || catalog.sonCatalogs?size == 0]onclick="searchCourseByCatalogId(‘${catalog.catalogId}‘)"[/#if]>${catalog.catalogName}</a>
                        [#if catalog.sonCatalogs?? && catalog.sonCatalogs?size > 0]
                        <ul>
                            [@showCatalogTree catalog /]
                        </ul>
                        [/#if]
                    </li>
                [/#list]
            </ul>
        </div>
    </div>
</div>


3、freemarker宏定义

[#macro courseCenterBreadcrumb breadcrumbCatalogList]
    <ol class="breadcrumb">
        <li><a href="">首页</a></li>
        [#if breadcrumbCatalogList?size == 0]
            <li><a href="/lrm/controller/courseCenter/search" style="color: #417cf2;">课程中心</a></li>
        [#else]
            <li><a href="/lrm/controller/courseCenter/search">课程中心</a></li>
        [/#if]
        [#list breadcrumbCatalogList as catalog]
            [#if catalog_has_next]
                <li><a style="cursor: pointer" onclick="searchCourseByCatalogId(‘${catalog.catalogId}‘)">${catalog.catalogName}</a></li>
            [#else]
                <li><a style="cursor: pointer;color: #417cf2;" onclick="searchCourseByCatalogId(‘${catalog.catalogId}‘)">${catalog.catalogName}</a></li>
            [/#if]
        [/#list]
    </ol>
[/#macro]


4、由于宏定义中数据是递归的,所以后端数据也要组织好。

Map<String,String> catalogConditionMap = new HashMap();
catalogConditionMap.put("companyId", webUserSession.getCorpId());
List<Catalog> catalogList = catalogService.get(catalogConditionMap, Order.asc("catalog_order_no"));
Iterator<Catalog> iterator = catalogList.iterator();
while (iterator.hasNext()) {
    Catalog catalog = iterator.next();
    if(catalog.getParentCatalogId().equals("") || catalog.getParentCatalogId().equals("0")) {
        setCatalogChildren(catalog, webUserSession.getCorpId());
    } else {
        iterator.remove();
    }
}
modelMap.put("catalogList", catalogList);
private void setCatalogChildren(Catalog catalog,String companyId) {
    List<Catalog> sonCatalogList = catalogService.getByParentId(catalog.getCatalogId(),companyId);
    if(CollectionUtils.isNotEmpty(sonCatalogList)) {
        catalog.setSonCatalogs(sonCatalogList);
        for(Catalog sonCatalog : sonCatalogList) {
            setCatalogChildren(sonCatalog, companyId);
        }
    }

}


将目录树形结构组织成一颗树的形式。



使用freemarker宏定义使用树形目录的展示

原文:http://my.oschina.net/xiaoxiangdaizi/blog/500738

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!