一. 类型转换器
前端传入的值,从表单中传入的值,都是字符串或者是字符串数组的形式传入的,在后端需要进行手动的转换类型,然后才能正确的使用。 框架一般对常见的数据类型的转换进行了封装提供,如字符串转换成数字等。
有标量的转换器,即字符串到数字,字符串到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; } }