Spring DataBinder

两种构造方式创建数据绑定组件:

/**
 * 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);

  






posted @ 2020-01-08 14:52  GordonDicaprio  阅读(116)  评论(0编辑  收藏