日期类型不同于其他数据类型(其它数据类型可以自动注入到方法的参数上),日期类不能根据属性名自动注入到方法的参数中。需要单独做转换处理。点击查看其他数据类型注入的方式
package com.user.controller;import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import java.util.Date;@Controller
public class DateAction {@RequestMapping("/date.action")public String one(@DateTimeFormat(pattern = "yyyy-MM-dd")Date date1){System.out.println(date1);//Tue Jan 25 00:00:00 CST 2022return "main";}
}
这种解决方案要在每个使用日期类型的地方都去添加使用@DateTimeFormat注解,比较麻烦,我们可以使用@InitBinder注解来进行类中统一日期类型的处理。
package com.user.controller;import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;import java.text.SimpleDateFormat;
import java.util.Date;@Controller
public class DateAction {//日期转换类SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");@InitBinderpublic void initBinder(WebDataBinder dataBinder){dataBinder.registerCustomEditor(Date.class,new CustomDateEditor(sf,true));}@RequestMapping("/date.action")public String one(Date date1){System.out.println(date1);//Wed Sep 28 00:00:00 CST 2022return "main";}
}
这样在类中出现的所有日期都可以进行转换了,不再需要加注解驱动和@DateTimeFormat。