如何使用百日咳条件 - 如果 - elseif - 否则

Dec*_*d27 11 thymeleaf

我有一点问题,我必须选择一个不同的选择到一个td使用百里香,我尝试下一句话:

<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>
Run Code Online (Sandbox Code Playgroud)

但我有一个问题,因为条件给我一个很大的失败,因为无法解析表达式.只有两个条件(iniciado和finalizado)没有问题,但我需要为我的表单中的选择获取正确的标签.

任何人都知道正确的句子使用ifmeif else和thymeleaf一句吗?

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>
Run Code Online (Sandbox Code Playgroud)

解决方案是完美的,现在一切正常.谢谢大家.

Far*_*ook 35

条件运算符包含3个结果.它应该有这样的2.

condition ? first_expression : second_expression;
Run Code Online (Sandbox Code Playgroud)

在你的情况下.我认为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>
Run Code Online (Sandbox Code Playgroud)

如果你想要输出3个值,并且假设它linea.estado是一个可能包含的字符串,'WARN', 'DANGER', 'INFO'那么你可以做这样的事情.

<span th:class="'label label-' + ((${linea.estado} == 'SUCCESS') ? 'success' : (${linea.estado} == 'DANGER') ? 'danger' : 'warning')"                   
      th:text="...">
</span>
Run Code Online (Sandbox Code Playgroud)

更清洁的解决方案将是这样的

<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>
Run Code Online (Sandbox Code Playgroud)

或使用Patrick LCSwitch提到的

  • 注意语法错误,因为我没有在运行时测试任何代码


Lea*_*edo 5

我认为解决方案是使用来自 Thymeleaf文档的 switch 语句:

<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>
Run Code Online (Sandbox Code Playgroud)

在 Thymeleaf 中没有任何其他结构可以使用,尽管您可以使用 th:if/th:unless。在 thymeleaf 论坛中查看主题。


Ng *_*ong 5

我需要 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>
Run Code Online (Sandbox Code Playgroud)