springboot中controller接收Date参数有两种写法
如果不正确处理会报异常
Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date'
正确处理方式为
第一种,在controller中添加initBinder
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
这种方法对独立的Date参数或Vo对象中的Date参数都有效,且支持传入null值
独立Date参数示例接口
@RequestMapping("/test")
public String test(String echo, Date testDate){
System.out.println("echo="+echo+",testDate="+testDate);
return "testDate="+testDate;
}
Vo对象参数示例接口
@RequestMapping("/testVo")
public String testVo(EchoVo echoVo){
System.out.println("echo="+echoVo.getEcho()+",testDate="+echoVo.getTestDate());
return "testDate="+echoVo.getTestDate();
}
第二种,在Date参数上使用注解@DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”)
这种同样方法对独立的Date参数或Vo对象中的Date参数都有效,且支持传入null值,只是注解位置有所不同
独立参数写法
@RequestMapping("/test")
public String test(String echo,@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date testDate){
System.out.println("echo="+echo+",testDate="+testDate);
return "testDate="+testDate;
}
Vo参数写法
public class EchoVo {
private String echo;
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date testDate;
public String getEcho() {
return echo;
}
public void setEcho(String echo) {
this.echo = echo;
}
public Date getTestDate() {
return testDate;
}
public void setTestDate(Date testDate) {
this.testDate = testDate;
}
}
下载效果演示demo工程,https://pan.baidu.com/s/171OC4QRKmXvtKVheM7vDbg
下载密码请扫描订阅公众号,回复"密码"获取下载密码