2012-09-12 180 views
0

我的問題是,我從數據庫讀取數字(BigDecimal),我用DOT查看它們作爲小數點分隔符,但我想用COMMA查看它們。我使用了以下代碼:
@ NumberFormat(style = Style.NUMBER,pattern =「##,###,###。##」)
private BigDecimal number;綁定@NumberFormat,將逗號設置爲小數點分隔符?

我的應用程序具有以下結構:
Oracle數據庫 - 冬眠 - Spring MVC的

我需要一個自動轉換,而無需手動轉換爲字符串DecimalFormat的。

回答

0

我解決了這個辦法:

@InitBinder 
public void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { 
    DecimalFormat df =new DecimalFormat(); 
    DecimalFormatSymbols dfs = new DecimalFormatSymbols(); 
    dfs.setDecimalSeparator(','); 
    df.setGroupingUsed(false); 
    df.setDecimalFormatSymbols(dfs); 
    df.setMaximumFractionDigits(32); 
    df.setMaximumIntegerDigits(32); 
    binder.registerCustomEditor(BigDecimal.class, new CustomNumberEditor(BigDecimal.class,df, true)); 
} 
1

BigDecimal是BigDecimal。它沒有任何內在格式。

此外,它絕對是而不是像Hibernate這樣的ORM的工作,以您希望顯示的方式轉換數據。當您需要顯示數據時,將您的實體作爲數據處理,並在表示層中使用適當的NumberFormat。數字格式化在持久層中無關緊要。

編輯:我誤解了這個問題:

NumberFormat的語言環境相關。這意味着,表示「與區域設置關聯的組分隔符」,'.'表示「與區域設置關聯的小數點分隔符」。

如果要將點作爲組分隔符和逗號作爲小數點分隔符,則可以使用默認情況下具有這些作爲分隔符的語言環境,或者使用DecimalFormat和set the DecimalFormatSymbols以適當的值。

+0

我已經知道你在說什麼,但我要問什麼花樣我應該用在我的情況。如果模式是##,###,###。##我得到99,999,999.99,但我想要99.999.999,99 – Tostis

+0

對不起。我誤解了這個問題。請參閱我的回答中的編輯。 –

0

類似@Tostis'解決方案,但使用全局應用@InitBinder:

​​
相關問題