Thymeleaf-始终保留HTML元素,但有条件地显示值

时间:2019-05-01 21:20:33

标签: thymeleaf

我需要Thymeleaf始终包含一个label元素,但只能有条件地显示它的值。

如果message.type等于warning,则应显示message.text。否则,HTML DOM仍应包含label元素。

我已经尝试过,但是当label不等于message.type时,HTML中缺少warning元素。

<label id="message" th:if="${message.type == 'warning'}" 
   th:value="${message.text}" th:text="${message.text}"></label>

我正在尝试完成这样的事情:

<label id="message" th:value="${message.type=='warning' ? 
    message.text: ''}" th:text="${message.type=='warning'? 
   message.text: ''"></label>

如果message.type是警告,我希望这样的HTML:

<label id="message">My warning message</label> 

否则,我想要这样的HTML:

<label id="message"></label> 

1 个答案:

答案 0 :(得分:1)

许多不同的方法可以完成此任务。您已经有一个我期望可以使用的产品。 (为什么您说它不起作用?)另外,我不确定为什么要在标签中包含th:value(我将它们包括在内以匹配您的问题)。

<label
    id="message"
    th:value="${message.type == 'warning'? message.text : ''}"
    th:text="${message.type == 'warning'? message.text : ''}"></label>

您还可以执行以下操作:

<label th:if="${message.type == 'warning'}" id="message"  th:value="${message.text}" th:text="${message.text}"></label>
<label th:unless="${message.type == 'warning'}" id="message"></label>

或这样(假设额外的跨度不会弄乱您想要的标记):

<label id="message"><span th:if="${message.type == 'warning'}" th:text="${message.text}" /></label>