2010-11-29 5 views
3

ich einige Frühjahr Formularvalidierung mache, aber ich bin immer:Frühling Validierung: kann nicht von String umwandeln Datum

Failed to convert property value of type 'java.lang.String' to required type 'ja 
va.util.Date' for property 'birthdate'; nested exception is java.lang.Illega 
lStateException: Cannot convert value of type [java.lang.String] to required typ 
e [java.util.Date] for property 'birthdate': no matching editors or conversi 
on strategy found 

Doch meiner modelAttribute Form ich habe:

@NotNull 
@Past 
@DateTimeFormat(style="S-") 
private Date birthdate; 

Ich dachte, das DateTimeFormat war dafür verantwortlich?

Ich benutze den Hibernate-Validator 4.0.

+0

Haben Sie ''? – axtavt

+0

Vergessen zu erwähnen, dies ist in einem Portlet, so dass die mvc: annotation-driven nicht funktioniert. Ich benutze: \t \t \t \t \t \t jack

+0

\t \t \t – jack

Antwort

9

Theres eine Chance müssen Sie registrieren ein CustomDateEditor in Ihrem Controller (s), um von einem String in ein Datum zu konvertieren. Die folgende Beispielmethode wird in Ihrem Controller ausgeführt. Sie müssen das Datumsformat jedoch so ändern, dass es dem entspricht, was Sie gerade verwenden.


@InitBinder 
    public void initBinder(WebDataBinder binder) { 
     CustomDateEditor editor = new CustomDateEditor(new SimpleDateFormat("MM/dd/yyyy"), true); 
     binder.registerCustomEditor(Date.class, editor); 
    } 
4

Um @DateTimeFormat Sie verwenden müssen FormattingConversionServiceFactoryBean installieren. <mvc:annotation-driven> tut es implizit, aber wenn Sie es nicht Sie etwas brauchen wie diese verwenden:

<bean id="conversionService" 
    class="org.springframework.format.support.FormattingConversionServiceFactoryBean" /> 

<bean id="annotationMethodHandlerAdapter"  
    class="org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="webBindingInitializer"> 
     <bean id="configurableWebBindingInitializer" 
      class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"> 
      <property name="validator"><ref bean="validator"/> 
      <proeprty name = "conversionService" ref = "conversionService" /> 
     </bean> 
    </property> 
</bean>