springmvc提交表单日期用Date接收

springMVC提交表单时候,日期数据正常情况下要用String来接收,如果想要用Date来接收,可以实现PropertyEditorRegistry接口,这个接口在spring-beans包下

@InitBinder
    protected void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));//第二个参数是控制是否支持传入的值是空,这个值很关键,如果指定为false,那么如果前台没有传值的话就会报错
    }

将这个方法放在BaseController里就行

在Spring MVC中,自定义类型转换通常涉及到创建一个`Converter`实现类,以便将从用户输入(如请求参数、表单等)获取的数据转换为你需要的特定类型,比如Date。这里是一个完整的案例: 首先,你需要创建一个日期转换器接口(如`CustomDateConverter`): ```java import org.springframework.core.convert.converter.Converter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public interface CustomDateConverter extends Converter<String, Date> { } ``` 然后,实现这个接口,并提供具体的转换逻辑: ```java import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.Date; @Component public class CustomDateStringToDateConverter implements CustomDateConverter { private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); @Override public Date convert(String source) { try { return dateFormat.parse(source); } catch (ParseException e) { throw new IllegalArgumentException("Invalid date format, expected 'yyyy-MM-dd'.", e); } } } ``` 接下来,在Spring MVC的配置中注册这个转换器: ```java @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Autowired private CustomDateStringToDateConverter customDateConverter; @Override protected ConfigurableTypeResolver createDefaultConversionService() { DefaultConversionService conversionService = new DefaultConversionService(); conversionService.addConverter(customDateConverter); return conversionService; } } ``` 现在,当你尝试将请求参数解析为Date类型时,Spring MVC会自动调用你提供的`CustomDateStringToDateConverter`。 例如,假设你在控制器方法中有一个接收日期参数的参数: ```java @PostMapping("/process-date") public String processDate(@RequestParam("date") Date inputDate) { // 使用inputDate处理业务逻辑... } ``` 如果你传递的请求参数格式是"2023-05-20",它将会被转换成对应的Date对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值