SpringMVC 自定义类型转换

 类型转换可以将请求参数转换为指定的类型、指定的格式(数据的格式化),然后传给业务方法的参数。

Spring MVC内置了常用的类型转换器。如果内置的类型转换器满足不了需求,可以使用自定义的类型转换。

 

自定义类型转换有2种方式:

  • 使用Converter
  • 使用Formatter

 

 


 

 

Converter方式

(1)新建包com.chy.converter,包下新建类DateConverter,作为自定义的类型转换器

// 需要实现Converter接口,<原始类型,目标类型>
public class DateConverter implements Converter {

    //参数是请求参数中的原始数据,返回值是转换好的数据(目标类型)
    @Override
    public Date convert(String source) {
       // 经过一些操作,将原始类型的数据,转换为目标类型的数据并返回
       // ......
    }

}

 

 

(2)在spring mvc的配置中添加:

    
    <bean name="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        
        <property name="converters">
            <set>
                
                <bean class="com.chy.com.chy.converter.DateConverter" />
            set>
        property>
    bean>

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

 

 


 

 

Formatter方式

(1)新建包com.chy.converter,包下新建类DateFormatter

// 需要实现Converter接口,<目标类型>
public class DateConverter implements Formatter {
    //parse()是转换,将原始类型转换为目标类型,参数是原始类型(String)
    @Override
    public Date parse(String source, Locale locale) throws ParseException {
        
    }

    //print()是格式化输出,将目标类型转换为指定格式的字符串,参数是parse()转换好的目标类型
    @Override
    public String print(Date date, Locale locale) {
        
    }
}

Formatter的类型转换、数据格式化是分开的,写在2个方法里。

 

 

(2)在spring  mvc的配置中添加:

    
    <bean name="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        
        <property name="formatters">
            <set>
                
                <bean class="com.chy.com.chy.converter.DateConverter" />
            set>
        property>
    bean>

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

 

 


 

  

踩过的坑:

xmlns:mvc="http://www.springframework.org/schema/cache"

IDEA自动导入的约束不对,将cache改为mvc,xsi中对应的部分也要改。

 

你可能感兴趣的:(SpringMVC 自定义类型转换)