フォーム内の空のfloat値が0に変換されることを@InitBinderに伝えることができるかどうか疑問に思っています。
floatがプリミティブデータ型であることは知っていますが、nullまたは空の値を0に変換したいと思います。
それが可能であれば、どうすればそれを達成できますか?
それ以外の場合は、floatの代わりにStringを使用して回避策を作成します
フォーム内の空のfloat値が0に変換されることを@InitBinderに伝えることができるかどうか疑問に思っています。
floatがプリミティブデータ型であることは知っていますが、nullまたは空の値を0に変換したいと思います。
それが可能であれば、どうすればそれを達成できますか?
それ以外の場合は、floatの代わりにStringを使用して回避策を作成します
はい、いつでもそれを行うことができます。Spring には、CustomNumberEditor
Integer、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));
}
これでタスクが実行されます。