Thymeleaf操作执行concat而不是乘法

时间:2019-11-28 03:12:36

标签: java spring-boot math thymeleaf

我在Java项目中使用thymeleaf模板,但对某些变量执行以下算术运算时却注意到了一个奇怪的结果:

<div th:with="p=${(a.num != null ? a.num[0] : 1 ) * #list.size(b.items)}">
  <p th:inline="text">[[${p}]] of [[#list.size(b.items)]] items</p>
</div>

给出a.num == null,并且b.items包含20,我的预期结果是:

20 of 20 items

但是目前它却显示如下:

11111111111111111111 of 20 items

似乎将1读取为字符串并将其连接20次。我该如何使其执行乘法运算?

我不熟悉thymeleaf,这是我第一次处理这个项目,所以我宁愿不更改服务层的值,而只是在视图层执行此简单乘法。谢谢

1 个答案:

答案 0 :(得分:1)

两者都必须是数字才能执行乘法运算。

  • ${'3' * 4}-将产生3333
  • ${3 * 4 }-将产生12
  • ${#conversions.convert('3', 'java.lang.Integer') * 4}将得到12。在这里,我们将java.lang.String转换为java.lang.Integer