我只是想知道是否可以告诉@InitBinder表单中的空浮点值将转换为0.
我知道float是一种原始数据类型,但我仍然希望将null或空值转换为0.
如果可能的话,我怎样才能做到这一点?
否则,我只是使用String而不是float来解决方法
最佳答案
是的,你总能这样做.Spring有一个CustomNumberEditor,它是任何Number子类的可自定义属性编辑器,如Integer,Long,Float,Double.It默认由BeanWrapperImpl注册,但是,可以通过注册它的自定义实例来覆盖它自定义编辑器.这意味着你可以像这样扩展一个类
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,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));
}
这应该完成任务.