我想使用 ul/li 列表呈现 HTML 菜单。我有这个类结构:
public class MenuItem {
private String name;
private MenuItem parent;
private List<MenuItem> children;
public MenuItem(String name,List<MenuItem> children) {
this.name = name;
this.children = children;
for (MenuItem child : children) {
child.parent = this;
}
}
public MenuItem(String name) {
this.name = name;
}
public String getName() {
return name;
}
public MenuItem getParent() {
return parent;
}
public List<MenuItem> getChildren() {
return children;
}
}
正如您所看到的,它是典型的树结构,其中一个根元素包含对其子元素的引用,并且它们也对其子元素进行引用,依此类推。
现在我想渲染这样的结构:
<ul>
<li>Item 1
<ul>
<li>Item 1.1</li>
<li>Item 1.2
<ul>
<li>Item 1.2.1</li>
<li>Item 1.2.3</li>
</ul>
</li>
<li>Item 1.3</li>
</ul>
</li>
<li>Item 2</li>
</ul>
我怎样才能用百里香做到这一点?如果我必须使用的话我很容易其他技术像瓷砖、布局或其他任何东西。
编辑:我尝试参数化包含/替换但没有运气。传递的参数将转换为字符串,并且不能用于另一级递归。看https://github.com/ultraq/thymeleaf-layout-dialect/issues/12
非常感谢,
Frank
尝试这个:
为单个菜单项创建一个片段,如下所示menuFragment.html
<html>
<section layout:fragment="menu">
<ul>
<li th:each="menuItem : ${menuItemsList}" th:text="${menuItem.name}">
<section layout:include="@{path/to/folder/menuFragment} :: menu" th:with="menuItemsList=${menuItem.children}"></section>
</li>
</ul>
</section>
</html>
将片段包含在菜单文件中,如下所示
<section layout:include="@{path/to/folder/menuFragment} :: menu" th:with="menuItemsList=${rootMenuItemAsList}"></section>
rootMenuItemAsList
是包含您的父菜单的列表
希望这对你有帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)