09.SpringMVC之类型转换

一. 类型转换器

前端传入的值,从表单中传入的值,都是字符串或者是字符串数组的形式传入的,在后端需要进行手动的转换类型,然后才能正确的使用。 框架一般对常见的数据类型的转换进行了封装提供,如字符串转换成数字等。

有标量的转换器,即字符串到数字,字符串到Boolean等。

 

 

 也有集合类型的转换器, 如数组到集合, 拼接型字符器(如,) 到集合等。

 

 

 发现,没有常用的字符串到日期 Date 的转换器。 

1、定义转换器,实现接口Converter<From,To>

package cn.converters;

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

import org.springframework.beans.TypeMismatchException;
import org.springframework.core.convert.converter.Converter;
/**
 * 
 * @author 景佩佩
 *
 *S:Source 源类型
 *T:Target 目标类型
 */
public class DateConverter 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){
        //一个字符串和一个特定形式能否匹配,正则
        SimpleDateFormat sdf=new SimpleDateFormat();
        if (Pattern.matches("^\\d{4}-\\d{2}-\\d{2}$", source)) {
            sdf=new SimpleDateFormat("yyyy-MM-dd");
        }else if (Pattern.matches("^\\d{4}/\\d{2}/\\d{2}$", source)) {
            sdf=new SimpleDateFormat("yyyy/MM/dd");
        }else if (Pattern.matches("^\\d{4}\\d{2}\\d{2}$", source)) {
            sdf=new SimpleDateFormat("yyyyMMdd");
        }
        return sdf;
    }
    
}

 

2、注册转换器

 

 3、引用转换器

 

posted on 2019-09-10 16:04  情陌人灬已不在  阅读(296)  评论(0编辑  收藏  举报

导航