HTTP请求映射到Controller方法的参数上后,Spring会自动进行类型转化,对于日期类型的参数,Spring默认并没有配置如何将字符串转为日期类型。
有两种方式:
方法一. :使用注解@InitBinder,添加格式化绑定
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.addCustomFormatter(new DateFormatter("yyyy-MM-dd"));
}
//传入的String类型的date入参,先被initBinder给转化了
@ResponseBody
@RequestMapping("/date")
public void printData(@RequestParam("date") Date d) {
System.out.println(d);
return;
}
方法二:
通过SpringBoot的MVC特性全局配置类WebMvcConfigurer类
1.定义MvcConfigurer继承WebMvcConfigurer
2. 定义格式化日期的方法
/**
* WebMvcConfigurer是用来全局定制化SpringBoot的MVC特性
* @author jiangxin-028
*
*/
@Configuration
public class MvcConfigurer implements WebMvcConfigurer{
//格式化
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new DateFormatter("yyyy-MM-dd"));
}
}
配置类在应用启动的时候就初始化了。