原因
前端传入了日期参数,后台接收格式不匹配导致
前端代码
<form action="${pageContext.request.contextPath}/user/getUser" method="post">
id:<input type="text" name="id"/>
name:<input type="text" name="name"/>
birthday:<input type="date" name="birthday">
<input type="submit"value="提交">
</form>
后台接收
@RequestMapping("/getUser")
private String getUser(User user,HttpSession session){
session.setAttribute("user","zs");
System.out.println(user.toString());
return "index";
}
解决方式
1.在实体类中日期属性上添加
@DateTimeFormat
注解
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
2.自定义一个转换规则并在
bean
中注册 (SpringMVC提供了Converter接口,它支持从一个Object转换为另一个Object)
1.util–>DateConvert.java
/**
* 全局日期处理类
* Convert<T,S>
* 泛型T:代表客户端提交的参数 String
* 泛型S:通过convert转换的类型
*/
public class DateConvert implements Converter<String, Date> {
@Override
public Date convert(String stringDate) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
return simpleDateFormat.parse(stringDate);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
2.mvc.xml
<!-- 第三步:注册处理器映射器/处理器适配器 ,添加conversion-service属性-->
<mvc:annotation-driven conversion-service="conversionService"/>
<!-- 第二步: 创建convertion-Service ,并注入dateConvert-->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<ref bean="dateConvert"/>
</set>
</property>
</bean>
<!-- 第一步: 创建自定义日期转换规则 -->
<bean id="dateConvert" class="com.zzc.util.DateConvert"/>