我有一个通用的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
元素的正确类?
答案 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' : ''"/>