3、
<mvc:annotation-driven conversion-service="myDateFormatter"> 加入,否则不会生效
2、把bean注册到springmvc当中。这里formatters属性是个Set,元素类型就是具体要放入的自定义Formatter
FormattingConversionServiceFactoryBean
假如controller里面有个方法入参,有两个Date date1,Date date2,我们没可能给它们两个去建立两个WebDataBinder。所以自定义一个全局的DateFormatter来使用;
1、先创建普通类,继承Formatter<Date>,这泛型的意思是,把一个S类型转成的一个目标类型,这里我们需要的是Date
定义一个日期格式化工具类
public class DateUtil { public static SimpleDateFormat S_STANDARD_DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static SimpleDateFormat S_DAY_DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd");
自定义Formatter
public class MyDateFormatter implements Formatter<Date>{ @Override public Date parse(String text, Locale locale) throws ParseException { return DateUtil.S_DAY_DATEFORMAT.parse(text); } @Override public String print(Date object, Locale locale) { return DateUtil.S_DAY_DATEFORMAT.format(object); } }
注册自定义的formatter
@Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Bean public Formatter<Date> myDateFormatter(){ return new MyDateFormatter(); } @Override public void addFormatters(FormatterRegistry registry) { registry.addFormatter(myDateFormatter()); super.addFormatters(registry); } }
测试使用
/** *date:2018-05-24 * @param date */ @PostMapping("date") public void dateType(Date date){ System.out.println(date); } /** *date2:2018-05-24 * @param date2 */ @PostMapping("date2") public void dateType2(Date date2){ System.out.println(date2); } // /** // * InitBinder注解的value为指定requestParam的name // * 此注解的作用范围在自身所在controller内 // * @param binder // */ // @InitBinder({"date"}) // public void initDate(WebDataBinder binder){ // //指定处理类型,自定义数据处理器,处理器允许requestParam值为空 // binder.registerCustomEditor(Date.class,new CustomDateEditor(DateUtil.S_DAY_DATEFORMAT,true)); // }
1、自定义Formatter需要实现Formatter接口,并指定泛型(转换后的类型,该视频例中即为Date),实现其parse方法
2、配置bean,将自定义Formatter注入到Spring的FormattingConversionServiceFactoryBean类中,采用xml配置方式,同时将该bean作为mvc的conversion-service(如截图)
3、注意,这种规范器是全局的,Formatter适用于转换String为其他类型,所以一般用在web层,将请求体中的内容进行转换
对于一个controller中多个方法需要做前台传过来的日期字符串做日期格式转换操作,可以写一个formatter继承Formatter,然后写一次字符串转日期的操作,最后在dispatcherServlet中配置一下即可。controller中的所有方法参数就可以直接写成日期格式类型,formatter可以帮忙做字符串转日期格式的操作。
1、自定义Formatter需要实现Formatter接口,并指定泛型(转换后的类型,该视频例中即为Date),实现其parse方法
2、配置bean,将自定义Formatter注入到Spring的FormattingConversionServiceFactoryBean类中,采用xml配置方式,同时将该bean作为mvc的conversion-service(如截图)
3、注意,这种规范器是全局的,Formatter适用于转换String为其他类型,所以一般用在web层,将请求体中的内容进行转换