如何使用Thymeleaf属性处理器格式化负货币?

时间:2016-01-16 08:01:26

标签: thymeleaf

我需要使用Thymeleaf在表格中显示负货币格式的值。目前,我使用\0来实现此目标,如下所示:

#numbers.formatDecimal

对于大于零的<td th:text="${'$' + #numbers.formatDecimal(value, 1, 'DEFAULT', 2, 'DEFAULT)}" /> ,这样可以正常工作:

value

但对于否定<td>$34.50</td> ,我得到:

value

这不正确 - 我需要将货币符号移动到减号的右侧。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

我个人只是使​​用DecimalFormat完全按照您的需要应用格式:

<td th:text="${new java.text.DecimalFormat('$#,##0.00;$-#,##0.00').format(value)}" />

答案 1 :(得分:0)

由于百万富翁后处理器api无法将美元符号插入您想要的位置,您需要自己进行一些处理:

您使用th:if(或th:unless)来处理2种可能的情况,即正值或负值

如果是肯定value,您可以使用自己的代码。

如果是否为value,您可以使用th:with创建一个正值为value的变量,然后修改th:text以放置<td th:if="${value >= 0}" th:text="${'$' + #numbers.formatDecimal(value, 1, 'DEFAULT', 2, 'DEFAULT)}" /> <td th:if="${value < 0}" th:with="inverted=${-value}" th:text="${'-$' + #numbers.formatDecimal(inverted, 1, 'DEFAULT', 2, 'DEFAULT)}" /> 在美元之前减去标志并使用您创建的新变量。

<td />

处理后,只会打印oneDay中的一个