首页 > 解决方案 > 有没有办法将条件映射到 th:insert?

问题描述

我要显示的是对象的集合,例如

cards: [
  {
    type: "type_0"
    elements: [
      ...
    ]
  }
  ...
]

应该在哪里type更改生成的 html。我想以下应该有效

<div th:switch="${card.type}" th:body="${card}">
    <div th:case="type_0"> <div th:insert="card_0"/> </div>
    ...
</div>

但是有没有办法在不为每种新卡类型添加额外的情况下做同样的事情?

标签: thymeleaf

解决方案


如果您使用一致的命名方案,那么您可以使用预处理:

<div th:insert="${__${card.type}__}"></div>

在运行时,Thymeleaf 将首先进行预处理,因此它将代码转换为:

<div th:insert="${type_0}"></div>

然后,实际的模板渲染就完成了,所以如果有一个名为 的片段type_0.html,它应该被插入。


推荐阅读