2013-09-30 84 views
0

我正在使用jQuery日期選擇器在UI中提供日期。並提到的日期格式爲無法正確配置@DateTimeFormat Spring 3

$("#validFrmDt").datepicker({ dateFormat: "dd-mm-yy" }); 

下面要求的格式:例如:30-09-2013

,並在我的Spring MVC模型類我想這種格式與我的java.util.Date屬性進行綁定爲此,我已經配置如下圖所示:

@DateTimeFormat(pattern = "dd-MM-yyyy") 
private Date validFromDate; 

但不幸的是我得到了以下異常:

SEVERE: Servlet.service() for servlet mvc-dispatcher threw exception 
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors 
Field error in object 'submitXXXForm' on field 'validFromDate': rejected value [30-09-2013]; codes [typeMismatch.submitXXXForm.validFromDate,typeMismatch.validFromDate,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [submitXXXForm.validFromDate,validFromDate]; arguments []; default message [validFromDate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'validFromDate'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'validFromDate': no matching editors or conversion strategy found] 
Field error in object 'submitXXXForm' on field 'validToDate': rejected value [30-09-2013]; codes [typeMismatch.submitXXXForm.validToDate,typeMismatch.validToDate,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [submitXXXForm.validToDate,validToDate]; arguments []; default message [validToDate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'validToDate'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'validToDate': no matching editors or conversion strategy found] 
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:818) 
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:367) 
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Unknown Source) 

我的日期格式配置是否有誤。請幫忙。

回答

1

您需要有一個自定義的轉換器才能將字符串轉換爲java.util.Date。 在你的應用環境,你可能有這樣的事情:

<bean id="customEditorsRegistrar" class="org.springframework.batch.support.DefaultPropertyEditorRegistrar"> 
    <property name="customEditors" ref="customEditors" /> 
</bean> 

如果你這樣做,你需要創建並添加自定義編輯到HashMap中有從字符串轉換器來java.util.Date:

<bean id="customEditors" class="java.util.HashMap"> 
    <constructor-arg> 
     <map> 
      <entry key="java.util.Date"> 
       <bean class="org.springframework.beans.propertyeditors.CustomDateEditor"> 
        <constructor-arg> 
         <bean class="pt.xx.xxxx.xxxx.core.common.support.file.converter.UtilDateFormat" /> 
        </constructor-arg> 
        <constructor-arg value="true" /> 
       </bean> 
      </entry> 
     </map> 
    </constructor-arg> 
</bean> 
+0

好優先答案+1 – ldrumm

+0

謝謝,Idrumm :) – vribeiro