代码报错集1:日期参数书写格式
程序员文章站
2022-05-29 10:24:46
...
日期参数书写格式,导致404问题:
1、在ParamController类中添加param3方法,代码实现如下:
package com.tedu.controller;
import java.util.Date;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller /* 这个注解表示当前类是属于控制层 */
public class ParamController {
/* 测试:接收日期类型的参数 */
@RequestMapping("param3")
public String param3(Date date){
System.out.println("date="+date.toLocaleString());
return "home";
}
@RequestMapping("param2")
public String param2(User user){
System.out.println("user="+user);
return "home";
}
@RequestMapping("param1")
public String param1(String name, Integer age){
System.out.println("name="+name);
System.out.println("age="+age);
return "home";
}
}
2、访问ParamController中的param3方法,在访问时,注意将date参数一起发送给服务器:
正确方式:localhost/param3?date=2019/1/21
控制台输出结果为:
date=2019-1-21 0:00:00
**? 当访问ParamController中的param3方法,如果传递给服务器的日期数据是如下格式:
方式:localhost/param3?date=2019-1-21
则会出现404报错,其实是因为参数格式匹配错误,由于springmvc默认的日期格式是yyyy/MM/dd,因此如果日期参数不是 yyyy-MM-dd 格式,就会出现400错误!!
解决方案:
在springmvc中,提供了@InitBinder注解,用于指定自定义的日期转换格式,因此,我们只需要在Controller类中添加下面的代码即可,在接受日期类型的参数时,会自动按照自定义的日期格式进行转换。
public class ParamController {
@RequestMapping("param3")
public String param3(Date date){
System.out.println("date="+date.toLocaleString());
return "home";
}
/* 自定义日期转换格式 */
@InitBinder
public void InitBinder (ServletRequestDataBinder binder){
binder.registerCustomEditor(java.util.Date.class,
new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)
);
}
...
...
}
推荐阅读