今天写项目时遇到这样一个问题,现在有这样一个需求:需要用户在页面上输入时间,然后提交给后台保存进数据库。
我的前端效果是这样的:
注意这里的时间是String类型的,而我的实体类里写的该属性是date类型,因为这个问题我的浏览器一直在报400,众所周知,400是客户端错误,而且经过各种方法测试后也证明了根本就没有请求到controller, 但是url却是正确的。在捣鼓了两个小时以后,终于我注意到了时间类型的问题,果然把所有和时间有关的文本框都注释后,请求成功!
接下来就是转换时间类型和格式的问题了,spring给我们提供了转换器,接下来是老师帮我配置的转换器:
在springmvc.xml中:
<mvc:annotation-driven conversion-service="conversionService"/>
<!-- 转换器 -->
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<!-- 转换器 -->
<property name="converters">
<list>
<bean class="com.thunderSoft.utils.DateConverter" />
</list>
</property>
</bean>
转换器具体内容:
public class DateConverter implements Converter<String, Date>{
SimpleDateFormat[] sdFormats=new SimpleDateFormat[]{
new SimpleDateFormat("yyyy-MM-dd"),
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"),
new SimpleDateFormat("yyyy/MM/dd"),
new SimpleDateFormat("dd/MM/yyyy"),
new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"),
new SimpleDateFormat("dd/MM/yyyy hh:mm:ss")
};
@Override
public Date convert(String str) {
Date date=null;
for (int i = 0; i < sdFormats.length; i++) {
try {
date=sdFormats[i].parse(str);
break;
} catch (Exception e) {
continue;
}
}
return date;
}
}
好了问题解决了。