我需要使用Thymeleaf在表格中显示负货币格式的值。目前,我使用\0
来实现此目标,如下所示:
#numbers.formatDecimal
对于大于零的<td th:text="${'$' + #numbers.formatDecimal(value, 1, 'DEFAULT', 2, 'DEFAULT)}" />
,这样可以正常工作:
value
但对于否定<td>$34.50</td>
,我得到:
value
这不正确 - 我需要将货币符号移动到减号的右侧。我怎样才能做到这一点?
答案 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
中的一个