【问题标题】:Thymeleaf: how to make table with different colorsThymeleaf:如何制作不同颜色的桌子
【发布时间】:2017-12-28 07:54:50
【问题描述】:

有人可以说如何使用 Thymeleaf 制作不同颜色的桌子吗?我有一个风险权重为整数的事件列表。我需要按条件对 html 列(选择类)进行着色。如果风险小于 20,则为绿色,如果风险从 20 到 50,则为黄色,如果风险大于 50,则为红色。如何为一个做几个条件? 我的变体不起作用。

<td th:text="${data.riskIndex}" th:if="${data.riskIndex &lt; 20 and data.riskIndex &gt;= 0}" class="green"></td>

【问题讨论】:

  • 这个帖子可能对你有同样的价值:stackoverflow.com/questions/29561449/…
  • 不,它不起作用,因为据我了解,Thymeleaf 只有 Elvis 运算符,如果你有超过 2 个条件,那就不方便了。当然,您可以在 Elvis 内部使用 Elvis 3 个条件。如果多了怎么办?我无法为 块实现 switch 运算符。我通过使用 JavaScript 而不是 Thymeleaf 解决了这个问题:

标签: java html css thymeleaf


【解决方案1】:

在这种情况下,我会使用th:class 而不是th:if(或者th:classappend,如果每列共享一些额外的类)。在th:class 内部,我会提供一个双重猫王运算符(不幸的是)来检查条件。

<td th:text="${data.riskIndex}" th:class="${data.riskIndex lt 20} ? 'green' : (${data.riskIndex le 50} ? 'yellow' : 'red')"></td>

或者,当有更多条件并且您不想涉及 javascript 时,您可以提供一些实用方法,将riskIndex 转换为适合您的颜色。

例如假设您创建了一个名为 DataRepresentationUtils 的实用程序类,其中包含一个为给定索引计算适当颜色的方法:

package web.utils;

public class DataRepresentationUtils {

    private DataRepresentationUtils() { }

    public static String convertRiskIndexToRGBLiteral(int riskIndex) {

        // some logic here. Example of output: "#00ff00"

    }
} 

然后您可以通过以下方式在模板中使用该方法:

<td th:text="${data.riskIndex}" th:styleappend="'background-color: ' + ${T(web.utils.DataRepresentationUtils).convertRiskIndexToRGBLiteral(data.riskIndex)} + ';'"></td>

【讨论】:

  • 谢谢。作为变体。但我试图阻止双倍或三倍的猫王。部分用 Thymeleaf 完成(用于条件下的颜色背景),部分用 JS 完成(用于图标而不是文本)。像这样:
  • riskIndex
    riskIndex td>
    riskIndex /div >
猜你喜欢
相关资源
最近更新 更多
热门标签