2012-09-12 144 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:

​​
相关问题