自定义数据绑定(转换器和格式化)

一般情况下,使用基本数据类型和POJO类型的参数数据已经能够满足需求,然而有些特**殊类型的参数时无法在后台进行直接转换的,**但也有特殊数据类型无法直接及逆行数据绑定,必须先经过数据转换,例如日期数据。

针对特殊数据类型,就需要开发者 自定义转化器 或 格式化

转换器: spring框架提供了一个Converter用户将一种类型的对象转化为另一种类型的对象。 自定义Converter类需要实现org.springramework.core.convert.converyer.Converter接口。

public interface Converter<S,T>{
          
   
   T convert(S source);
   //S时源类型),T是目标类型
}

格式化: Formatter与Converter的作用相同,只是Formatter的源类型必须是一个String类型,而Converter可以是任意类型。 使用Formatter自定义转化器需要实现org.springframework.format.Formatter接口。

public interface Formatter<T>extends Printer<T>,Paster<T>{
          
   }

日期特殊类转换器和格式化。

转换器

第一步编写控制类

//日期控制器
@Controller
public class DateController {
          
   
    @RequestMapping("/customDate")
    public String customDate(Date date){
          
   
        System.out.println("date="+date);
        return "success";
    }
}

第二步在Springmvc -config.xml 中配置转换器

<bean id="conversionServer" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
    <set>
        <bean class="org.chen.Converter.DateConverter"></bean>
    </set>
</property>
</bean>//到这一步我们的转换器已经配置成功

第三步 将配置的converServer配置到spring中

<mvc:annotation-driven conversion-service="conversionServer"/>
 
 //表头加入 mvc
xmlns:mvc="http://www.springframework.org/schema/mvc" 
 http://www.springframework.org/schema/mvc
 http://www.springframework.org/schema/mvc/spring-mvc.xsd

第四步 测试

利用Post请求输入获得的结果

格式化

第一步创建一个自定义转换器

/*
    使用Formatter自定义转换器
    *
    *
    * */
public class DateFormatter implements Formatter<Date> {
          
   
//   声明输入的格式    
    private String datePattern="yyyy-MM-dd HH:mm:ss";
//   声明 simpleDateFormat对象
    private SimpleDateFormat simpleDateFormat;
    public String print(Date date, Locale arg1){
          
   
        return  new SimpleDateFormat().format(date);
    }
    //先执行parse方法
    public Date parse(String source, Locale locale) throws ParseException{
          
   
        simpleDateFormat  =new SimpleDateFormat(datePattern);
        return simpleDateFormat.parse(source);
    }
}

第二步 同样的在springmvc-config.xml中配置自定义转换器的配置文件

<!--    自定义类型格式化转换器配置-->
    <bean id="conversionServer" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="formatters">
            <set>
                <bean class="org.chen.Converter.DateFormatter"></bean>
            </set>
        </property>
    </bean>

第三步 将自定义转化器配置到Spring中

<mvc:annotation-driven conversion-service="conversionServer"/>

第四步 运行 测试结果

经验分享 程序员 微信小程序 职场和发展