6

フォーム内の空のfloat値が0に変換されることを@InitBinderに伝えることができるかどうか疑問に思っています。

floatがプリミティブデータ型であることは知っていますが、nullまたは空の値を0に変換したいと思います。

それが可能であれば、どうすればそれを達成できますか?

それ以外の場合は、floatの代わりにStringを使用して回避策を作成します

4

2 に答える 2

3

はい、いつでもそれを行うことができます。Spring には、CustomNumberEditorInteger、Long、Float、Double などの任意の Number サブクラス用のカスタマイズ可能なプロパティ エディターがあります。デフォルトでは BeanWrapperImpl によって登録されますが、そのカスタム インスタンスをカスタムとして登録することでオーバーライドできます。 editor.これは、このようなクラスを拡張できることを意味します

public class MyCustomNumberEditor extends CustomNumberEditor{

    public MyCustomNumberEditor(Class<? extends Number> numberClass, NumberFormat numberFormat, boolean allowEmpty) throws IllegalArgumentException {
        super(numberClass, numberFormat, allowEmpty);
    }

    public MyCustomNumberEditor(Class<? extends Number> numberClass, boolean allowEmpty) throws IllegalArgumentException {
        super(numberClass, allowEmpty);
    }

    @Override
    public String getAsText() {
        //return super.getAsText();
        return "Your desired text";
    }

    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        super.setAsText("set your desired text");
    }

}

そして、コントローラーに通常どおり登録します。

 @InitBinder
    public void initBinder(WebDataBinder binder) {

       binder.registerCustomEditor(Float.class,new MyCustomNumberEditor(Float.class, true));
    }

これでタスクが実行されます。

于 2013-02-20T10:06:01.920 に答える