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层,将请求体中的内容进行转换