代码报错集1:日期参数书写格式

博客讨论了在SpringMVC中因日期参数格式不正确导致的404错误。当日期参数不是默认的'yyyy-MM-dd'格式时,会触发错误。解决方案是使用@InitBinder注解来自定义日期转换格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日期参数书写格式,导致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)
		);
	}
	...
	...
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值