如何使用 thymeleaf 条件 - if - elseif - else
How to use thymeleaf conditions - if - elseif - else
我有点问题,我必须return一个不同的选择select变成一个td
使用thymeleaf,我试试下一句:
<td style="white-space: nowrap">
<span th:class="${linea.estado}? 'label label-success' : 'label label-danger' : 'label label-warning'"
th:text="${linea.estado}? #{label.glineas.estado.iniciado} : #{label.glineas.estado.finalizado} : #{label.glineas.estado.configurado}">
</span>
</td>
但是我遇到了一个问题,因为无法解析表达式,所以条件给了我很大的失败。只有两个条件(iniciado 和 finalizado)没有问题,但我需要在我的表单中为 select 获取正确的标签。
有人知道在 thymeleaf 中使用 if elseif else 的正确句子吗?
2.0 现在我正在尝试用下一个来解决这个问题:
<td style="white-space: nowrap">
<span th:if="${linea.estado} == 'Iniciado'" class="label label-success" th:text="#{label.glineas.estado.iniciado}"></span>
<span th:if="${linea.estado} == 'Finalizado'" class="label label-danger" th:text="#{label.glineas.estado.finalizado}"></span>
<span th:if="${linea.estado} == 'Configuracion'" class="label label-warning" th:text="#{label.glineas.estado.configurado}"></span>
</td>
解决方案很完美,现在一切正常。谢谢大家。
我认为解决方案是使用来自 Thymeleaf 的 switch 语句 documentation:
<div th:switch="${user.role}">
<p th:case="'admin'">User is an administrator</p>
<p th:case="#{roles.manager}">User is a manager</p>
<p th:case="*">User is some other thing</p>
</div>
Thymeleaf 中没有任何其他结构可供使用,尽管您可以使用 th:if/th:unless。检查 thymeleaf 论坛中的 this 个帖子。
您的条件运算符包含 3 个结果。它应该有 2 个这样的。
condition ? first_expression : second_expression;
你的情况。我假设 linea.estado
是一个 boolean
值
<td style="white-space: nowrap">
<span th:class="${linea.estado} ? 'label label-success' : 'label label-danger'"
th:text="${linea.estado}? #{label.glineas.estado.iniciado} : #{label.glineas.estado.finalizado}">
</span>
</td>
如果你想输出 3 个值,并且假设 linea.estado
是一个可能包含 'WARN', 'DANGER', 'INFO'
的字符串,那么你可以这样做。
<span th:class="'label label-' + ((${linea.estado} == 'SUCCESS') ? 'success' : (${linea.estado} == 'DANGER') ? 'danger' : 'warning')"
th:text="...">
</span>
但是更干净的解决方案将是像这样
<span th:if="${linea.estado} == 'SUCCESS'" class="label label-success" th:text="#{label.glineas.estado.iniciado}"></span>
<span th:if="${linea.estado} == 'DANGER'" class="label label-danger" th:text="#{label.glineas.estado.finalizado}"></span>
<span th:if="${linea.estado} == 'WARN'" class="label label-warning" th:text="#{label.glineas.estado.configurado}"></span>
或使用Patrick LC
提到的Switch
- 注意语法错误,因为我没有在运行时测试任何代码
你也可以这样做
<p th:if="${projects != null and projects.size() gt 0}"> <a th:href="@{/hire/invite/} + ${f.id}" class="btn waves-effect">Anything</a> </p>
其他
我需要 else if 但我所有的条件都不是那么简单 th:switch="${user.role} 可以工作,所以我这样做:
<div th:switch="true">
<p th:case="${product.price} == '849'"> Beautiful Goat</p>
<p th:case="false"> Magnificent Goat</p>
<p th:case="'Whatever things I want to do with my else if'"> Goat</p>
</div>
下次如果你想 if - elsif -else
你可以这样做:
(例如,我想知道我的操作对象上的 url 是否包含 confluence 然后 confluence
否则如果它包含 jira 然后 jira
在 th:text 上)
<p th:text="((${#strings.contains({action.url},'confluence')}) ? 'confluence' : ((${#strings.contains({action.url},'jira')}) ? 'jira' : '')) " />
有效。
如果您只想拥有一个元素,可以选择设置多个条件。
这有点令人困惑,但如果你理解其中的逻辑,这没什么大不了的。
假设您想做这样的事情:
if(user.role.admin){
//add only class='text-success'
}else if(user.role.user){
//add only class='text-primary'
}else{
//add only class='text-warning'
}
逻辑是if1 : 'text-success' ? if2 : 'text-primary' ? 'text-warning'
很简单的。但是语法是这样的:
<span th:class="( ${user.role.admin} ? 'text-success' : ( ${user.role.user} ? 'text-primary' : 'text-warning' ) )"></span>
我有点问题,我必须return一个不同的选择select变成一个td
使用thymeleaf,我试试下一句:
<td style="white-space: nowrap">
<span th:class="${linea.estado}? 'label label-success' : 'label label-danger' : 'label label-warning'"
th:text="${linea.estado}? #{label.glineas.estado.iniciado} : #{label.glineas.estado.finalizado} : #{label.glineas.estado.configurado}">
</span>
</td>
但是我遇到了一个问题,因为无法解析表达式,所以条件给了我很大的失败。只有两个条件(iniciado 和 finalizado)没有问题,但我需要在我的表单中为 select 获取正确的标签。
有人知道在 thymeleaf 中使用 if elseif else 的正确句子吗?
2.0 现在我正在尝试用下一个来解决这个问题:
<td style="white-space: nowrap">
<span th:if="${linea.estado} == 'Iniciado'" class="label label-success" th:text="#{label.glineas.estado.iniciado}"></span>
<span th:if="${linea.estado} == 'Finalizado'" class="label label-danger" th:text="#{label.glineas.estado.finalizado}"></span>
<span th:if="${linea.estado} == 'Configuracion'" class="label label-warning" th:text="#{label.glineas.estado.configurado}"></span>
</td>
解决方案很完美,现在一切正常。谢谢大家。
我认为解决方案是使用来自 Thymeleaf 的 switch 语句 documentation:
<div th:switch="${user.role}">
<p th:case="'admin'">User is an administrator</p>
<p th:case="#{roles.manager}">User is a manager</p>
<p th:case="*">User is some other thing</p>
</div>
Thymeleaf 中没有任何其他结构可供使用,尽管您可以使用 th:if/th:unless。检查 thymeleaf 论坛中的 this 个帖子。
您的条件运算符包含 3 个结果。它应该有 2 个这样的。
condition ? first_expression : second_expression;
你的情况。我假设 linea.estado
是一个 boolean
值
<td style="white-space: nowrap">
<span th:class="${linea.estado} ? 'label label-success' : 'label label-danger'"
th:text="${linea.estado}? #{label.glineas.estado.iniciado} : #{label.glineas.estado.finalizado}">
</span>
</td>
如果你想输出 3 个值,并且假设 linea.estado
是一个可能包含 'WARN', 'DANGER', 'INFO'
的字符串,那么你可以这样做。
<span th:class="'label label-' + ((${linea.estado} == 'SUCCESS') ? 'success' : (${linea.estado} == 'DANGER') ? 'danger' : 'warning')"
th:text="...">
</span>
但是更干净的解决方案将是像这样
<span th:if="${linea.estado} == 'SUCCESS'" class="label label-success" th:text="#{label.glineas.estado.iniciado}"></span>
<span th:if="${linea.estado} == 'DANGER'" class="label label-danger" th:text="#{label.glineas.estado.finalizado}"></span>
<span th:if="${linea.estado} == 'WARN'" class="label label-warning" th:text="#{label.glineas.estado.configurado}"></span>
或使用Patrick LC
提到的Switch
- 注意语法错误,因为我没有在运行时测试任何代码
你也可以这样做
<p th:if="${projects != null and projects.size() gt 0}"> <a th:href="@{/hire/invite/} + ${f.id}" class="btn waves-effect">Anything</a> </p>
其他
我需要 else if 但我所有的条件都不是那么简单 th:switch="${user.role} 可以工作,所以我这样做:
<div th:switch="true">
<p th:case="${product.price} == '849'"> Beautiful Goat</p>
<p th:case="false"> Magnificent Goat</p>
<p th:case="'Whatever things I want to do with my else if'"> Goat</p>
</div>
下次如果你想 if - elsif -else
你可以这样做:
(例如,我想知道我的操作对象上的 url 是否包含 confluence 然后 confluence
否则如果它包含 jira 然后 jira
在 th:text 上)
<p th:text="((${#strings.contains({action.url},'confluence')}) ? 'confluence' : ((${#strings.contains({action.url},'jira')}) ? 'jira' : '')) " />
有效。
如果您只想拥有一个元素,可以选择设置多个条件。 这有点令人困惑,但如果你理解其中的逻辑,这没什么大不了的。
假设您想做这样的事情:
if(user.role.admin){
//add only class='text-success'
}else if(user.role.user){
//add only class='text-primary'
}else{
//add only class='text-warning'
}
逻辑是if1 : 'text-success' ? if2 : 'text-primary' ? 'text-warning'
很简单的。但是语法是这样的:
<span th:class="( ${user.role.admin} ? 'text-success' : ( ${user.role.user} ? 'text-primary' : 'text-warning' ) )"></span>