0

私の問題は、db から数値 (BigDecimal) を読み取り、DOT を小数点記号として表示することですが、COMMA を使用して表示したいと考えています。次のコードを使用しました:
@ NumberFormat (style = Style.NUMBER, pattern = "##,###,###.##")
private BigDecimal number;

次のアーキテクチャを持つ私のアプリケーション:
oracle db - hibernate - spring mvc

DecimalFormat を使用して手動で文字列に変換せずに自動変換する必要があります。

4

3 に答える 3

1

私はこのように解決しました:

@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));
}
于 2012-09-13T07:20:19.163 に答える
1

BigDecimal は BigDecimal です。固有の形式はありません。

さらに、表示したい方法でデータを変換するのは、Hibernate のような ORM の仕事ではありません。エンティティをデータとして扱い、データを表示する必要がある場合は、プレゼンテーション レイヤーで適切な NumberFormat を使用します。数値の書式設定は、永続レイヤーでは何の関係もありません。

編集:私は質問を誤解しました:

NumberFormat はロケールに依存します。これは、,「ロケールに関連付けられたグループ区切り記号」を意味し'.'、「ロケールに関連付けられた小数点記号」を意味します。

グループ区切り記号としてドットを使用し、小数点区切り記号としてコンマを使用する場合は、デフォルトでこれらの区切り記号を持つロケールを使用するか、DecimalFormat を使用してDecimalFormatSymbolsを適切な値に設定します。

于 2012-09-12T10:38:41.607 に答える