Spring MVC与表单日期提交的问题

spring mvc 本身并不提供日期类型的解析器,需要手工绑定, 否则会出现非法参数异常.

 org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.Date]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException

解决方法很简单,只需要在controller 里面注册一个类型解析器:

    @InitBinderpublic void InitBinder(HttpServletRequest request,ServletRequestDataBinder binder) {// 不要删除下行注释!!! 将来"yyyy-MM-dd"将配置到properties文件中// SimpleDateFormat dateFormat = new// SimpleDateFormat(getText("date.format", request.getLocale()));SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");dateFormat.setLenient(false);binder.registerCustomEditor(Date.class, null, new CustomDateEditor(dateFormat, true));}    

这样就ok了,

demo 如下:

controller

@RequestMapping("bakComment")
@Controller
public class BakCommentController {Logger logger = Logger.getLogger(getClass());@Resourceprivate CommentService commentService;//@InitBinderpublic void InitBinder(HttpServletRequest request,ServletRequestDataBinder binder) {// 不要删除下行注释!!! 将来"yyyy-MM-dd"将配置到properties文件中// SimpleDateFormat dateFormat = new// SimpleDateFormat(getText("date.format", request.getLocale()));SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");dateFormat.setLenient(false);binder.registerCustomEditor(Date.class, null, new CustomDateEditor(dateFormat, true));}@RequestMapping("verifyComment")public void verifyComment(@ModelAttribute("comment") TSdComment comment,HttpServletRequest request, HttpServletResponse response)throws IOException {logger.info(comment);String str = "success";response.setCharacterEncoding("utf-8");response.getWriter().print(str);}
}

html:

<form:form modelAttribute="comment" class="form" method="post"><fieldset><legend> 账单信息 </legend><table class="table" style="width: 100%;"><tr><th>ID</th><td><input name="commentId" value="<%=uid%>"readonly="readonly" /></td><th>用户ID</th><td><input name="restaurantId" class="easyui-validatebox"data-options="required:true" readonly="readonly" /></td></tr><tr><th>商家名称</th><td><input name="restaurantName" readonly="readonly" /></td><th>创建时间</th><td><input name="createTime" readonly="readonly" /></td></tr><tr><th>消费金额</th><td><input name="commentSpending" /></td><th>抵金卷面额</th><td><input name="voucherDenomination" /></td></tr><tr><th>审核状态</th><td><select><option value="2">待检测</option><option value="3">已检查(通过)</option><option value="4">已检查(不通过)</option></select></td><th>原因</th><td><input name="commentRemark" /></td></tr><tr><th>账单</th><td colspan="3"><div style="width: 600px" id="commentPic"></div></td></tr></table></fieldset></form:form>

控制台如下:

 2014-05-23 13:32:09,514 [http-bio-8080-exec-1] INFO  [com.sd.microMsg.controller.BakCommentController] - TSdComment [commentId=11, userId=null, restaurantId=1, voucherId=null, restaurantName=笑嘻嘻, commentMlb=null, commentContext=null, commentPersonNo=null, voucherDenomination=30.0, commentSpending=300.0, commentPictureId=null, commentPraiseCount=null, commentNegativeCount=null, commentSelectCount=null, commentSubCommentCount=null, commentReContext=null, commentRemark=mohu, commentCheckedStatus=null, commentBusinessStatus=null, createType=null, createTime=Sat May 17 19:05:52 GMT+08:00 2014, lastActiveTime=null, checkedTime=null, commentTempConsumptionTopNum=null, commentTempPerCapitaConsumptionTopNum=null, commentType=null, commentMlzs=null, commentPlusMlzs=null, commentMark=null, commentSubMark=null, version=null, dtype=null]

不绑定解析器异常堆栈如下:

 1  org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.Date]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException
 2     at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:162)
 3     at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:198)
 4     at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:470)
 5     at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:516)
 6     at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1119)
 7     at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:924)
 8     at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76)
 9     at org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:692)
10     at org.springframework.validation.DataBinder.doBind(DataBinder.java:588)
11     at org.springframework.web.bind.WebDataBinder.doBind(WebDataBinder.java:191)
12     at org.springframework.web.bind.ServletRequestDataBinder.bind(ServletRequestDataBinder.java:112)
13     at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.doBind(AnnotationMethodHandlerAdapter.java:785)
14     at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:813)
15     at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:367)
16     at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
17     at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
18     at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
19     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
20     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
21     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
22     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
23     at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
24     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
25     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
26     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
27     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
28     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
29     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
30     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
31     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
32     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
33     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
34     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
35     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
36     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
37     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
38     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
39     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
40     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
41     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
42     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
43     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
44     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
45     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
46     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
47     at java.lang.Thread.run(Thread.java:745)
48 Caused by: java.lang.IllegalArgumentException
49     at java.util.Date.parse(Date.java:615)
50     at java.util.Date.<init>(Date.java:272)
51     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
52     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
53     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
54     at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
55     at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
56     ... 45 more
57 2014-05-23 13:25:52,323 [http-bio-8080-exec-1] DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] - Returning cached instance of singleton bean 'sqlSessionFactory'
58  五月 23, 2014 1:25:52 下午 org.apache.catalina.core.StandardWrapperValve invoke
59 严重: Servlet.service() for servlet [springMvc] in context with path [/prot] threw exception [Request processing failed; nested exception is org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
60 Field error in object 'comment' on field 'createTime': rejected value [2014-05-17 19:05:52]; codes [typeMismatch.comment.createTime,typeMismatch.createTime,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [comment.createTime,createTime]; arguments []; default message [createTime]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'createTime'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'createTime': no matching editors or conversion strategy found]] with root cause
61 org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
62 Field error in object 'comment' on field 'createTime': rejected value [2014-05-17 19:05:52]; codes [typeMismatch.comment.createTime,typeMismatch.createTime,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [comment.createTime,createTime]; arguments []; default message [createTime]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'createTime'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'createTime': no matching editors or conversion strategy found]
63     at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:818)
64     at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:367)
65     at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
66     at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
67     at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
68     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
69     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
70     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
71     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
72     at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
73     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
74     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
75     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
76     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
77     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
78     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
79     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
80     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
81     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
82     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
83     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
84     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
85     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
86     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
87     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
88     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
89     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
90     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
91     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
92     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
93     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
94     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
95     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
96     at java.lang.Thread.run(Thread.java:745)

Spring MVC与表单日期提交的问题相关推荐

  1. Spring MVC —— form表单post提交出现乱码

    主要原因是:页面提交时,使用<contentType:utf-8/>格式,而服务端HttpMessageConverter解码时使用其它格式解码(如:ISO-8859-1)导致 解决方案: ...

  2. Spring MVC的表单控制器——SimpleFormController .

    http://blog.csdn.net/rj042/article/details/6907274 年7月微软MVP申请开始啦!           CSDN十大风云博客专栏评选结果公布! Spri ...

  3. Spring MVC:表单处理卷。 2 –复选框处理

    很难想象现代Web应用程序中没有表单复选框的情况. 在之前的一篇文章中,我写了有关Spring MVC中的表单处理的文章 ,作为本系列文章的续篇,我将写有关Spring MVC表单的文章,尤其是关于复 ...

  4. 中input标签赋值_Java程序员:Spring MVC JSP表单标签示例

    Spring MVC的表单标签为Java程序员提供了许多额外的支持.例如数据绑定,允许自动设置数据并从Java对象中检索数据. 从2.0版本开始,Spring提供了一组全面的数据绑定感知标记,用于在使 ...

  5. Spring MVC:表单处理卷。 5 –选择,选项,选项标签

    下拉列表是Web表单中最常见的元素之一. 在HTML中,可以使用适当的标签创建此类控件: <form:select> –下拉列表的父标签和<form:option> – < ...

  6. Spring MVC:表单处理卷。 4 –单选按钮

    在软件开发领域,单选按钮是图形用户界面的重要组成部分. Spring MVC标签库为此表单元素提供了特殊标签. 更确切地说,有两个标签用于此目的:单选按钮,单选按钮. 两者对于特定任务都是有用的. 如 ...

  7. Spring MVC:表单处理卷。 3 –复选框处理

    我已经发布了有关使用Spring MVC标签库处理'checkbox'标签的帖子. 现在,我要开发此主题并继续使用"复选框"标签. 它并不难,但是在某些情况下,您最好使用它. 在本 ...

  8. Spring MVC:表单处理卷。 1个

    Spring MVC是Spring Framework的一部分,其主要目的是使Web开发更加简单,便捷和轻松. 与表单的交互是或多或少现代Web应用程序的一部分. Spring MVC允许您以非常严格 ...

  9. Spring MVC JSP 表单标签教程

    在本教程中,我们将通过一个示例讨论所有与Spring MVC相关的JSP表单标签. 在本教程中,我们将使用下面重要的弹簧MVC表单标签进行讨论: 表单标签 文本字段标签 选择标签 复选框 无线电盒 密 ...

最新文章

  1. TensorFlow tfjs 0.10.3 发布
  2. linux基础命令介绍十四:定时任务
  3. 抽象类应用——模板方法模式
  4. 爬取小说1--高并发
  5. 个人机房重构--七层实现登录
  6. C#黔驴技巧之去重(Distinct)
  7. 前端学习(2576):选择何种方式的路由和底层原理
  8. linux下java连接mysql_LinuxJava连接MySQL数据库
  9. Android开发笔记(二十七)对象序列化
  10. 你的红包狂欢夜,互联网巨头们的流量争夺战
  11. Linux学习一天一个命令(1)[ls命令]
  12. 面对强势顾客,怎样应对才好?
  13. Unicode 入门详解(V14.0版本)
  14. 一个人php建站_人人站CMS-简单安全的PHP开源CMS建站系统
  15. PySerial库的简单用法
  16. linux0.11 80386段
  17. 【系统化学习】CSDN算法技能树测评
  18. 软件工程师学习硬件原理图--第一讲看懂GPIO和门电路(弱智学前班儿童系列)
  19. 云之讯张雯:云计算时代融合通讯开发及算法优化
  20. 野人岛4四季神器java,十一天,四季的感受,顶风冒雪美国中西部自驾旅游之五-黄石:梦想之地(1)...

热门文章

  1. HDOJ 1082 模拟 水
  2. Oracle Index
  3. 瞎忙不如不忙——读高德拉特《目标》有感
  4. T-SQL DISTINCT
  5. [轉]SQL Server 2005备份维护计划
  6. Xshell 更改字体配色
  7. 计算机网络五层协议简介
  8. hibernate主配置文件中指定session与当前线程绑定
  9. ftp服务器搭建(离线安装vsftpd),配置
  10. MFC接收ShellExecute多个参数