两种构造方式创建数据绑定组件:
/** * Create a new DataBinder instance, with default object name. * @param target the target object to bind onto (or {@code null} * if the binder is just used to convert a plain parameter value) * @see #DEFAULT_OBJECT_NAME */ public DataBinder(@Nullable Object target) { this(target, DEFAULT_OBJECT_NAME); } /** * Create a new DataBinder instance. * @param target the target object to bind onto (or {@code null} * if the binder is just used to convert a plain parameter value) * @param objectName the name of the target object */ public DataBinder(@Nullable Object target, String objectName) { this.target = ObjectUtils.unwrapOptional(target); this.objectName = objectName; }
说明:
or null if the binder is just used to convert a plain parameter value【 如果仅使用数据绑定组件的类型转换功能,则可以将target对象设置为null。】
类型转换功能(实现了TypeConvert[org.springframework.beans.TypeConverter]接口,因此拥有类型转换功能):
@Nullable <T> T convertIfNecessary(@Nullable Object value, @Nullable Class<T> requiredType) throws TypeMismatchException; @Nullable <T> T convertIfNecessary(@Nullable Object value, @Nullable Class<T> requiredType, @Nullable MethodParameter methodParam) throws TypeMismatchException; @Nullable <T> T convertIfNecessary(@Nullable Object value, @Nullable Class<T> requiredType, @Nullable Field field) throws TypeMismatchException; @Nullable default <T> T convertIfNecessary(@Nullable Object value, @Nullable Class<T> requiredType, @Nullable TypeDescriptor typeDescriptor) throws TypeMismatchException { throw new UnsupportedOperationException("TypeDescriptor resolution not supported"); }
使用方式:
DataBinder db = new DataBinder(null); Integer s = db.convertIfNecessary("324", Integer.class); Double aDouble = db.convertIfNecessary("234.32", Double.class); Integer integer = db.convertIfNecessary(1232.633, Integer.class); Integer[] integers = db.convertIfNecessary(new String[]{"123", "456"}, Integer[].class);