4

フォーム(Spring 3 MVCプロジェクト)があり、データ検証にDTO(データ転送オブジェクト)を使用しています。BindingResult.hasErrors()データはコントローラーに送信され、メソッドと適切なアノテーションを使用してデータの有効性を確認しています。数値フィールドに問題があるので、ここでは簡単にします。

DTO:

public class Item {

    private String discount;

    @Digits(integer = 15, fraction = 2)
    public String getDiscount() {
        return discount;
    }

}

discountフィールドに何も書かれていないフォームを送信するとBindingResult.hasErrors()、メッセージとともにtrueが返されます

numeric value out of bounds (<15 digits>.<2 digits> expected)

私が達成したいのは、discountフィールドを空にすることができるということですが、そこに何かが書かれている場合は、@Digits注釈によって提供される数値形式である必要があります。どうやってやるの?

4

2 に答える 2

5

あなたがする必要があるのは、空の文字列nullに変換するようにSpringを設定することです。StringTrimmerEditorこれは、FormControllerinitBinderメソッドにaを登録することで実現できます。

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}

StringTrimmerEditor

次に、parsifalで指定されているように、値を有効@Digitsと見なします。null

于 2013-01-08T14:58:41.553 に答える
-1

カスタム検証アノテーションを作成できます。説明は春のドキュメントにあります:http : //static.springsource.org/spring/docs/3.0.0.RC3/reference/html/ch05s07.html、par 5.7.2.2

于 2013-01-08T14:08:31.077 に答える