4

----サンプルVO

@NumberFormat(pattern = "###,##0")
private int money=100000;

- - -コントローラ

@RequestMapping(value="/com/spelSample.do")
public String spelSample(SampleVO sampleVO,  Model model){

    model.addAttribute("sampleVO", sampleVO);

    return "sampleResult";
}

-------sampleResult.jsp

money: <spring:eval expression="sampleVO.money"/>

- - -期待

money : 100,000

------しかし、結果は

money : 100000

何が問題ですか?私は何をすべきか?

4

1 に答える 1

5

ドキュメントから:_@NumberFormat

フィールドを数値としてフォーマットする必要があることを宣言します。スタイルまたはカスタム パターン文字列による書式設定をサポートします。任意の JDK java.lang.Number タイプに適用できます

プリミティブ フィールドで使用しています。どうやらそれはカバーされていません。Integerの代わりに使用しintます。

編集:より正確に言うと、可能なすべてのサブクラスjava.lang.Numberがカバーされているわけではありません。からの関連する抜粋は次のNumberFormatAnnotationFormatterFactoryとおりです。

public NumberFormatAnnotationFormatterFactory() {
    Set<Class<?>> rawFieldTypes = new HashSet<Class<?>>(7);
    rawFieldTypes.add(Short.class);
    rawFieldTypes.add(Integer.class);
    rawFieldTypes.add(Long.class);
    rawFieldTypes.add(Float.class);
    rawFieldTypes.add(Double.class);
    rawFieldTypes.add(BigDecimal.class);
    rawFieldTypes.add(BigInteger.class);
    this.fieldTypes = Collections.unmodifiableSet(rawFieldTypes);
}

これは、Commons/Lang などのフレームワークからのすべてのカスタム Number 実装と同様に、並行 API からの Atomic* クラスが欠落していることを意味します。

更新:<mvc:annotation-driven> (コメントを参照) context.xmlにも追加する必要があります。

于 2011-08-24T07:46:53.880 に答える