当springMVC获取页面中的日期时间数据是会出错,因为springMVC不知道日期的具体格式是怎样的,因此我们需要做如下事情:
自定义一个日期时间转换器(继承converter<S,T>接口)
S 被转换的数据源类型
T 转换后的数据类型
实现其方法
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.core.convert.converter.Converter; /** * 日期转换器 * S:source 要转换的源类型 * T:目标,要转换成的数据类型 * @author Steven * */ public class DateConvert implements Converter<String, Date> { @Override public Date convert(String source) { Date result = null; try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); result = sdf.parse(source); } catch (ParseException e) { e.printStackTrace(); } return result; } }
写完转换器,springmvc还不认识这个转换器,需要在springmvc.xml中配置,将自己的转换器告诉springMVC
<!-- 定义转换器 --> <bean id="MyConvert" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.itheima.springmvc.utils.DateConvert" /> </set> </property> </bean>
接着,要让springMVC注解使用到这个转换器(在注解驱动中设置)
<!-- 配置注解驱动,相当于同时使用最新处理器映射跟处理器适配器,对json数据响应提供支持 --> <!-- 使用自定义转换器 --> <mvc:annotation-driven conversion-service="MyConvert" />
此时就可以获取前端传过来的日期时间类型的数据了
<td> <%-- <fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/> --%> <input type="text" name="items[${ status.index }].createtime" value='<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>'> </td>