如何递归地使用百里香叶渲染菜单

我想使用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...
  • 希望这可以帮助…