在上一篇博客《SpringMVC与MyBatis整合(一)——查询人员列表》中遗留了日期格式转换的问题,在这篇记录解决过程。
对于controller形参中pojo对象,如果属性中有日期类型,需要自定义参数绑定。
将请求日期数据串传成 日期类型,要转换的日期类型和pojo中日期属性的类型保持一致。
在上一篇的示例程序中,Person类属性如下:
而测试结果如下:
所以自定义参数绑定将日期串转成java.util.Date类型。需要向处理器适配器中注入自定义的参数绑定组件。
添加部分一:自定义日期类型绑定。
- DateConverter.java
package converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.core.convert.converter.Converter;
public class DateConverter implements Converter<String, Date>
{
public Date convert(String source) {
//实现 将日期串转成日期类型(格式是yyyy-MM-dd HH:mm:ss)
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
//转成直接返回
return simpleDateFormat.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
//如果参数绑定失败返回null
return null;
}
}
修改部分二:配置方式
在spring-mvc.xml中添加如下代码:
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!-- 自定义参数绑定 -->
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<!-- 转换器 -->
<property name="converters">
<list>
<!-- 日期类型转换 -->
<bean class="converter.DateConverter" />
</list>
</property>
</bean>
修改部分三:allPerson.jsp
将<td>${list.in_time}</td>修改为:
<td><fmt:formatDate value="${list.in_time}" pattern="yyyy-MM-dd HH:mm:ss"/><td>
结果如下:
修改成功!