Cómo renderizar el menú usando thymeleaf recursivamente
Me gustaría representar el menú HTML usando la lista ul / li. Tengo esta estructura de clase:
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;
}
}
Como puede ver, es la estructura de árbol típica, en la que un elemento raíz contiene referencia a sus elementos secundarios y ellos tienen referencia a los suyos, etc.
Ahora me encantaría representar una estructura como esta:
<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>
¿Cómo puedo hacer eso con tomillo?? Soy fácil si tengo que usarotras tecnologías como azulejos, diseño o cualquier otra cosa.
EDITAR: Intenté incluir / reemplazar parametrizado pero sin suerte. Los parámetros pasados se convierten en String y no se pueden usar para otro nivel de recursión. Verhttps://github.com/ultraq/thymeleaf-layout-dialect/issues/12
Muchas gracias,
Franco