如何使用百里香属性处理器格式化负货币



我需要使用Thymeleaf在表格中显示负货币格式的值。 目前,我正在使用#numbers.formatDecimal来实现此目的,如下所示:

<td th:text="${'$' + #numbers.formatDecimal(value, 1, 'DEFAULT', 2, 'DEFAULT)}" />

对于大于零的value,这工作正常:

<td>$34.50</td>

但是对于负value,我得到:

<td>$-12.75</td>

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

就个人而言,我只会使用DecimalFormat来完全根据需要应用格式:

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

由于使用百里香叶后处理器 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 />之一

最新更新