springmvc--自定义转换器,绑定日期类型参数

tech2022-10-16  106

文章目录

前台传输的日期类型参数,后台无法绑定的异常解决方法实际操作定义转换器在spring-mvc.xml中声明

前台传输的日期类型参数,后台无法绑定的异常

前台参数在请求体中传输时,都会当作String类型。在与controller中与参数进行绑定时需要转换器,转成参数类型。Springmvc默认提供了很多参数转换器,例如String转int等。对于需要转成Date类型的数据来说,也有默认的转换器,默认情况下YYYY/MM/dd格式的数据可以转成Date类型。但如果我们提交的数据是YYYY-MM-dd格式的,就无法绑定Date类型的参数。

解决方法

既然springmvc提供的转日期类型的转换器无法满足我们的需求,我们就自定义消息转换器来代替默认提供的日期转换器。

实际操作

定义转换器

继承 Converter<String, Date>,String代表被转换的数据类型,Date代表转换的目标类型。这是对YYYY-MM-dd类型的数据转换。

package com.springmvc.converter; import org.springframework.core.convert.converter.Converter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateConverter implements Converter<String, Date> { @Override public Date convert(String s) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { Date date = simpleDateFormat.parse(s); return date; } catch (ParseException e) { e.printStackTrace(); } return null; } }

在spring-mvc.xml中声明

声明自定义的转换器,告诉springmvc使用自定义的转换器

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--开启mvc注解驱动--> <mvc:annotation-driven conversion-service="conversionService"/> <!--定义生产转换器的工厂,生成自定义的转换器--> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.springmvc.converter.DateConverter"></bean> </set> </property> </bean> <!--扫描包--> <context:component-scan base-package="com.springmvc"></context:component-scan> <mvc:default-servlet-handler></mvc:default-servlet-handler> </beans>
最新回复(0)