2016-01-16 28 views
0

我需要使用Thymeleaf在表格中顯示負的貨幣格式值。目前,我使用#numbers.formatDecimal實現這一目標,如下所示:如何使用Thymeleaf屬性處理器格式化負值貨幣?

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

對於value大於零,這工作得很好:

<td>$34.50</td> 

但對於負value,我得到:

<td>$-12.75</td> 

這是不正確的 - 我需要將貨幣符號移動到減號的右側。我怎樣才能做到這一點?

回答

0

既然你想要的位置插入美元符號是不可能的thymeleaf後處理器的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 />的一個將被打印

1

個人而言,我只希望用一個DecimalFormat套用格式完全按照自己的需要:

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

有承認,這個解決方案看起來比我的清潔方式+1 – saljuama