出现错误:
HTTP Status 400 – Bad Request
Type Status Report
Description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
经过分析,原因如下:
<input type="text" name="createtime" value="<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>" />
前端提交的内容在后端用String类型来接收,而实体类中的定义的是private Date createtime;
springmvc没办法把字符串转换成日期类型
解决方法:
前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestMapping标记的方法进行适配,并对方法中的形参进行参数绑定。可以在springmvc处理器适配器上自定义转换器Converter进行参数绑定。
- 自定义Converter
package com.nic.demo.controller.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> {
public Date convert(String source) {
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
try {
Date date = sdf.parse(source.toString());
return date;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
- 配置Converter
在spingmvc的配置文件中进行如下配置,这里可以同时配置多个的转换器
<!-- 配置注解驱动 -->
<mvc:annotation-driven conversion-service="conversionService"/>
<!-- 转换器配置 -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.nic.demo.controller.converter.DateConverter"></bean>
</set>
</property>
</bean>