thymeleaf之菜单树

1.对象创建:

package com.demo.Model;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.util.List;

@Getter
@Setter
@ToString
public class PriMenu implements Serializable {

    private static final long serialVersionUID = -7458870847408160287L;

    private Long id;
    private Long pId; // 父节点id
    private String menuName;// 菜单名称
    private String menuUrl;// 访问地址
    private String priLevel;// 菜单层级
    private String priPath;// 权限菜单层级路径
    private String status; // 状态 0可用 1禁用
    private Long creatorId; // 创建人id
    private String createTime;
    private List<PriMenu> sonList;

    public PriMenu() {
    }

2.对象初始化

package com.demo.Common.constants;
import com.demo.Model.PriMenu;
import java.util.ArrayList;
import java.util.List;

public class MenuDemo {
    //菜单假数据
    public static List<PriMenu> Initialization(){
        List<PriMenu> list = new ArrayList<PriMenu>();

        PriMenu priMenu1 = new PriMenu();
        priMenu1.setMenuName("系统管理");

        List<PriMenu> list1 = new ArrayList<PriMenu>();
        PriMenu priMenuSon1= new PriMenu();
        priMenuSon1.setMenuName("菜单管理");
        PriMenu priMenuSon2= new PriMenu();
        priMenuSon2.setMenuName("角色管理");
        PriMenu priMenuSon3= new PriMenu();
        priMenuSon3.setMenuName("权限管理");
        PriMenu priMenuSon4= new PriMenu();
        priMenuSon4.setMenuName("用户管理");

        list1.add(priMenuSon1);
        list1.add(priMenuSon2);
        list1.add(priMenuSon3);
        list1.add(priMenuSon4);
        priMenu1.setSonList(list1);
        list.add(priMenu1);


        PriMenu priMenu2 = new PriMenu();
        priMenu2.setMenuName("列表管理");

        List<PriMenu> list2 = new ArrayList<PriMenu>();
        PriMenu priMenuSon5= new PriMenu();
        priMenuSon5.setMenuName("借款列表");
        PriMenu priMenuSon6= new PriMenu();
        priMenuSon6.setMenuName("日志管理");

        list2.add(priMenuSon5);
        list2.add(priMenuSon6);
        priMenu2.setSonList(list2);
        list.add(priMenu2);

        PriMenu priMenu3 = new PriMenu();
        priMenu3.setMenuName("功能管理");

        List<PriMenu> list3 = new ArrayList<PriMenu>();
        PriMenu priMenuSon7= new PriMenu();
        priMenuSon7.setMenuName("发送邮件");
        priMenuSon7.setMenuUrl("toUEditor.jhtml");
        PriMenu priMenuSon8= new PriMenu();
        priMenuSon8.setMenuName("表格导出");

        list3.add(priMenuSon7);
        list3.add(priMenuSon8);
        priMenu3.setSonList(list3);
        list.add(priMenu3);
        return list;
    }
}

3.Controller

package com.demo.Controller;
import com.demo.Common.constants.MenuDemo;
import com.demo.Model.PriMenu;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Slf4j
@Controller
public class ModelAndViewController {
      
   @RequestMapping("toMain.jhtml")
    public String mainView(HttpServletRequest request, ModelMap model) {
        log.info("跳转到后台首页");
        Map<String, Object> param = new HashMap<String, Object>();
        List<PriMenu> list = new ArrayList<PriMenu>();
        list=MenuDemo.Initialization();
        model.addAttribute("menus", list);
        return "pri/main";
    }
}

4.thymeleaf的使用(主要代码)

<li class="layui-nav-item layui-this" th:each="menu:${menus}">
    <a href="javascript:;" th:text="${menu.menuName}">系统管理</a>
    <ul class="layui-nav-child"  style="background: #2b2e37;">
         <li th:each="child:${menu.sonList}">
             <a th:if="${#lists.isEmpty(child.sonList)}" th:text="${child.menuName}" th:href="@{'/'+${child.menuUrl}}" href="javascript:;" style="margin-left: 20px;">用户管理</a>
         </li>
    </ul>
</li>

补充:需要配置的部分(只要引入依赖 pom.xml 自动加载)

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

<dependency>
       <groupId>org.webjars</groupId>
       <artifactId>jquery</artifactId>
       <version>3.1.1</version>
</dependency>
原文地址:https://www.cnblogs.com/gjq1126-web/p/11367586.html