如何在百里香中使用内部标签



我在thymelaf中有一个ul标记,其中有一个li标记,我想要的是如果其中一个元素(这里是amount(不为null,则显示它,我想要显示的是类似于下面的代码,这当然是错误的。我该怎么做?

<li th:text="${ <th:if="ingredient.amount!=null> ingredient.amount"+
" "+ ingredient.uom.description"
</li>

如果您还想显示一个li(amount==null或amount!=null(,那么使用一个带有th:if-属性的带有2个li元素的th:block来检查金额是否为null。

假设你的控制器中有

model.addAttribute("ingredients",
List.of(
new Ingredient("3EL","Pepper"),
new Ingredient("500gr","Cheese"),
new Ingredient(null,"Salt")
)
);

然后在你的页面

<th:block th:each="ingredient:${ingredients}">
<li th:if="${ingredient.amount != null}" 
th:text="${ingredient.amount + ' of ' + ingredient.description}"></li>
<li th:if="${ingredient.amount == null}" 
th:text="${'no need tu use ' + ingredient.description}"></li>
</th:block>

将生成

<ul>
<li>3EL of Pepper</li>
<li>500gr of Cheese</li>
<li>no need tu use Salt</li>
</ul>

如果您只想显示金额不为空的li,则不需要th:block

<ul>
<li th:each="ingredient:${ingredients}"
th:if="${ingredient.amount != null}"
th:text="${ingredient.amount + ' of ' + ingredient.description}" ></li>
</ul>

thymelaf条件的工作方式如果if条件为false,则不会显示标记及其内部的所有标记。

所以这一定是你想要的:

<li th:if="${ingredient.amount != null}">
<ul th:text="${your.text}"></ul>
</li>

最新更新