如何检查百里香中表字段的类类型?

时间:2019-06-11 16:11:23

标签: java spring thymeleaf

我有一个通用的thymeleaf表,如下所示:

 <tbody>
        <th:block th:each="row : ${page.getContent()}">
            <tr>
                 <td th:each="header : ${headers}" th:text="${row.__${header}__}"/>
            </tr>
        </th:block>
    </tbody>

该表仅由包含我的域对象的列表支持:

List<Header> headers = List.of("firstname", "lastname");
List<Person> page;

它的作用是:循环我的预定义列表headers,并仅选择标题列表中定义的那些属性。

问题:如何为每个字段的提取值的 classtype 添加评估,以便我可以在数字的情况下应用自定义样式?

问题是:当我输出显示的值的类时,输出为java.util.ArrayList 总是

th:text="${{row.__${header}__}.class.name}"

为什么这不能显示td元素的正确类?

2 个答案:

答案 0 :(得分:1)

如果您降低某个级别,则应该能够评估标头。我的想法是,预处理程序操作可能无法给您引用同一header元素上的td对象。

此用例也可能是th:classappend的不错选择,因为您可能想继承某种样式。

也不确定是否适用,但是表标题通常包装在<thead>元素中。然后,我假设您想要在Person中迭代的<tbody>对象的列表。

还没有测试,但是尝试:

<thead>
     <th:block th:each="header : ${headers}">
          <th th:text="${header}" class="someClass" th:classappend="${header.name.class instanceof T(java.math.BigDecimal) ? 'someDigitClassStyle' : ''}" />
      </th:block> 
<thead>

假设使用Spring。 Reference

最后,如果您想更广泛地捕获数字,可以考虑将isNumeric用作Apache util

答案 1 :(得分:0)

以下方法可根据实例检查来应用特定的CSS样式:

 th:text="${row.__${header}__}"
 th:style="${{row.__${header}__}.get(0) instanceof T(java.math.BigDecimal)} ? 'text-align:right' : ''"/>