thymeleaf模板的樹形遞歸

樹形遞歸這中需求,雖然在系統中不是出現頻率很高的功能,可是倒是大多數系統,又比不可少的一個內容。最近在研究和使用thymeleaf這個模板引擎,發現是真的好用,比原來的jsp和freemark的功能強大使用有又比較輕,特別是他是真正能夠作到脫離後臺程序開發的頁面原型的模板引擎。 好了,說了這麼多也就是想然你對這個東西產生一點興趣。像在頁面現實樹形菜單這個需求,我竟然在百度裏面,沒有百度出別人分享的案例(ps多是我百度的水平太low了吧。。。。)。因此,沒辦法,只好本身研究了。less

下面是我研究出來的成果。主要是使用到了thymeleaf的fragment功能。jsp

其餘的也很少說,只貼代碼,剩餘的能夠自行研究:ui

主體部分:this

<table class="layui-table">
    <colgroup>
      <col width="200">
      <col width="150">
      <col width="150">
      <col width="150">
      <col width="150">
      <col width="150">
      <col width="150">
      <col>
    </colgroup>
    <thead>
        <tr>
          <th>名稱</th>
          <th>標識</th>
          <th>類型</th>
          <th>權限資源</th>
          <th>描述</th>
          <th>狀態</th>
          <th>排序</th>
          <th style="text-align: center;">操做</th>
        </tr>
    </thead>
    <tbody th:include="this::row(${permissions},1)"/>
</table>

模板遞歸部分url

<!--局部模板-->
<th:block th:fragment="row(permissions,lv)">
  <th:block th:each="p : ${permissions}">
    <tr>
      <td th:text="${p.name}" th:style="|padding-left:${15*lv}px|">名稱</td>
      <td th:text="${p.key}">標識</td>
      <td th:text="${p.type.display}">權限類型</td>
      <td th:text="${p.url}">權限資源</td>
      <td th:text="${p.description}">描述</td>
      <td th:text="${p.enable?'可用':'禁用'}">是否啓用</td>
      <td th:text="${p.weight}">權重</td>
      <td style="text-align: center;">
        <div class="layui-btn-group">
          <a class="layui-btn layui-btn-mini"><i class="layui-icon"></i></a>
          <a class="layui-btn layui-btn-danger layui-btn-mini"><i class="layui-icon"></i></a>
        </div>
      </td>
    </tr>
    <th:block th:unless="${#lists.isEmpty(p.children)}" th:include="this::row(${p.children},${lv+1})"/>
  </th:block>
</th:block>

注意兩個地方: 此處是調用片斷,下面就是定義片斷。lists.isEmpty(p.children)就是判斷是否須要遞歸code

<tbody th:include="this::row(${permissions},1)"/>
相關文章
相關標籤/搜索