首页 > 代码库 > springmvc的类型转换

springmvc的类型转换

                                                                      springmvc的类型转换

默认情况下,springmvc内置的类型转换器只能

将“yyyy/MM/dd”类型的字符串转换为Date类型的日期

情境一:

而现在我们无法得知用

户会输入什么日期格式的数据,所以,内置的类型转换器无法转换其他日期格式的类型

为了方便程序,减少代码量,我们抽离出自己的类型转换器

此种方法也有弊端,就是讲几个类唯一的继承权用在了类型转换器上,但也是没有办法的办法

步骤一:

定义自己的类型转换器  继承一个父接口 Converter<S, T>

s:代表源数据类型

T:代表目标数据类型

 

package cn.hmy.convertion;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Pattern;

import org.springframework.core.convert.converter.Converter;

public class MyConvertion implements Converter<String, Date>{

    public Date convert(String source) {
        
        /*SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");*/
        SimpleDateFormat sdf=getDateFormat(source);
        try {
            return sdf.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    private SimpleDateFormat getDateFormat(String source) {
        //进行正则匹配
        //2016-12-14
        //2016/12/14
        //20161214
        if(Pattern.matches("^\\d{4}-\\d{2}-\\d{2}$", source)){
            return new SimpleDateFormat("yyyy-MM-dd");
        }else if(Pattern.matches("^\\d{4}/\\d{2}/\\d{2}$", source)){
            return new SimpleDateFormat("yyyy/MM/dd");
        }else if(Pattern.matches("^\\d{4}\\d{2}\\d{2}$", source)){
            return new SimpleDateFormat("yyyyMMdd");
        }else if(Pattern.matches("^\\d{4}年\\d{2}月\\d{2}日$", source)){
            return new SimpleDateFormat("yyyy年MM月dd日");
        }
        return null;
    }
    
    

}

 

步骤二、在配置文件中注册自定义类型转化器,将该类交由spring容器管理

 

 

<!-- 01.注册自定义的类型转换器 -->
     <bean id="myConvertion" class="cn.hmy.convertion.MyConvertion"></bean>
     
     <!--02.注册类型转换器的服务工厂  产生转换对象  -->
     <bean id="convertionservice" class="org.springframework.context.support.ConversionServiceFactoryBean">
       <property name="converters" ref="myConvertion"></property>
     </bean>
     <!--03.  -->
     <mvc:annotation-driven conversion-service="convertionservice"/> 

 

配置完成

 

springmvc的类型转换