Failed to convert from type java.lang.String to type java.util.Date for value ‘2010-12-13 11:19:05’; nested exception is java.lang.IllegalArgumentException
前端html页面把一些数据做成表单发给后台,后台使用封装对象去接收,出现上述异常(无效参数异常),而且通过断点调试,根本无法进入controller层中的方法。
jsp
<tr>
<td>下单时间</td>
<td>
<input type="text" name="orderTime"
value='<fmt:formatDate value="${order.orderTime}"
pattern="yyyy-MM-dd HH:mm:ss" />'/>
</td>
</tr>
controller
@RequestMapping("/orderUpdate")
public String orderUpdate(Order order){
// System.out.println(order.getOrderTime());
orderService.orderUpdateById(order);
return "redirect:/orderList";
}
由于表单提交的日期为String类型,Order对象中orderTimer类型为Date,表单数据无法封装为对象,因此程序也运行不到controller中。
解决方法:在controller中添加自定义日期转换格式
@InitBinder
public void InitBinder(ServletRequestDataBinder binder){
binder.registerCustomEditor(java.util.Date.class,
new CustomDateEditor(
new SimpleDateFormat("yyyy-MM-dd"),true));
}
运行测试,断点正常进入,controller层方法正常调用,问题解决~~~