SpringMVC的自定义类型转换器,设计一个自定义类型转换器案例,将一个出生日期格式为“yyyy-MM-dd-HH”的字符串,转为Date类型。
时间: 2023-06-25 17:06:33 浏览: 119
好的,下面是一个简单的SpringMVC自定义类型转换器的案例。
首先,我们需要创建一个类来实现自定义类型转换器的接口 `Converter<S, T>`,其中S表示源类型,T表示目标类型。在这个例子中,我们需要将字符串类型转换为Date类型,所以源类型为String,目标类型为Date。具体实现代码如下:
```java
public class StringToDateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH");
try {
return sdf.parse(source);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
}
```
上面的代码中,我们使用了Java自带的SimpleDateFormat类来将字符串转换为Date类型。在convert方法中,通过传入的字符串source和日期格式“yyyy-MM-dd-HH”来创建一个SimpleDateFormat对象sdf,然后调用sdf的parse方法将source转换为Date类型。
接下来,我们需要在SpringMVC的配置文件中注册这个自定义类型转换器。假设我们使用的是XML配置方式,那么可以在配置文件中添加如下代码:
```xml
<mvc:annotation-driven>
<mvc:argument-resolvers>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="conversionService">
<bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.example.converter.StringToDateConverter"/>
</set>
</property>
</bean>
</property>
</bean>
</property>
</bean>
</mvc:argument-resolvers>
</mvc:annotation-driven>
```
上面的代码中,我们使用了SpringMVC提供的mvc:argument-resolvers标签来注册自定义类型转换器。在这个例子中,我们将自定义类型转换器类StringToDateConverter添加到FormattingConversionServiceFactoryBean的converters属性中,并将这个bean注册为webBindingInitializer的conversionService属性。
最后,我们就可以在Controller中使用自定义类型转换器了。例如:
```java
@RequestMapping("/test")
public String test(Date birthDate) {
System.out.println(birthDate);
return "test";
}
```
在上面的代码中,我们使用了一个名为birthDate的Date类型参数,这个参数会被自动转换为我们在自定义类型转换器中指定的日期格式。
这就是一个简单的SpringMVC自定义类型转换器的案例。
阅读全文