我需要使用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 />
之一