Spring InitBinder:将float字段的空值或空值绑定为0

Jam*_*ter 6 spring bind spring-mvc

我只是想知道是否可以告诉@InitBinder表单中的空浮点值将转换为0.

我知道float是一种原始数据类型,但我仍然希望将null或空值转换为0.

如果可能的话,我怎样才能做到这一点?

否则,我只是使用String而不是float来解决方法

Dan*_*ush 4

是的,你总是可以这样做。Spring 有一个CustomNumberEditor可自定义的属性编辑器,适用于任何 Number 子类,如 Integer、Long、Float、Double。它默认由 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");
    }

}
Run Code Online (Sandbox Code Playgroud)

然后在你的控制器中正常注册它:

 @InitBinder
    public void initBinder(WebDataBinder binder) {

       binder.registerCustomEditor(Float.class,new MyCustomNumberEditor(Float.class, true));
    }
Run Code Online (Sandbox Code Playgroud)

这应该可以完成任务。