如何递归地使用百里香叶渲染菜单
我想使用ul / li列表呈现HTML菜单。 我有这个类结构:
public class MenuItem { private String name; private MenuItem parent; private List children; public MenuItem(String name,List 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 getChildren() { return children; } }
正如您所看到的那样,它是典型的树结构,其中一个根元素包含对其子元素的引用,并且它们引用了它们,等等。
现在我想要渲染这样的结构:
- Item 1
- Item 1.1
- Item 1.2
- Item 1.2.1
- Item 1.2.3
- Item 1.3
- Item 2
我怎么能用百里香 ? 如果我必须使用其他技术,如Tiles,Layout或其他任何东西,我很容易。
编辑:我尝试参数化包含/替换,但没有运气。 传递的参数将转换为String,不能用于其他级别的递归。 请参阅https://github.com/ultraq/thymeleaf-layout-dialect/issues/12
非常感谢你,
坦率
尝试这个:
为menuFragment.html
创建单个菜单项的片段
-
将片段包含在菜单文件中
rootMenuItemAsList
是包含父菜单的列表
希望对你有所帮助
我试过这个,在我看来,这条线:
将覆盖include(在li-tag内),因为th:text属性完全相同:覆盖li块内的内容。
我得到了以下工作:
prototype text...
希望这可以帮助…