利用thymeleaf的block标签实现递归展示多级菜单

阅读更多

       如题,借助thymeleaf的标签将多级菜单递归展示到页面上。网上查阅了多个博客,均不太适合我的需求。

这里,我主要用到的是标签里面的“th:include”属性,将其值设置为递归函数,并传入初始参数。通过设置“th:unless”属性,添加递归结束条件。

 

关键代码如下:

 

1、后端菜单数据结构:

 

MenuVO

 

/**
 * 菜单信息封装对象
 * 
 * @ClassName: MenuVO
 * @Description: TODO
 *
 */
public class MenuVO implements Serializable {

	private static final long serialVersionUID = 6979431459397881571L;

	/**
	 * 菜单id
	 */
	private Integer menuId;

	/**
	 * 菜单名字
	 */
	private String menuName;

	/**
	 * 菜单顺序
	 */
	private Integer menuOrder;

	/**
	 * 菜单对应页面地址
	 */
	private String url;

	/**
	 * 菜单图标
	 */
	private String icon;

	/**
	 * 子菜单集合
	 */
	private List children;
	/**
	 * 菜单类型:0、目录;1、菜单、2、按钮
	 */
	private Integer type;

//其他代码略...
}

 

2、在controller中返回的数据模型中写入MenuVO集合

 

@Controller
public class LoginController extends BaseController{

	@Autowired
	MenuService menuService;

	@GetMapping({ "/index" })
	String index(Model model) {
		List menus = menuService.queryMenusByUserId(getUserId());
		model.addAttribute("menus", menus);
		model.addAttribute("name", getUser().getName());
		return "index";
	}
//其他代码略......
}

 

3、添加菜单代码块

 

footer.html

 




	
		
			
  •  

    4、在index.html页面中引用菜单代码块

     

    
                

     

    你可能感兴趣的:(thymeleaf)