Frühling Validierung: kann nicht von String zu Datum konvertieren
-
29-09-2019 - |
Frage
Ich bin einige Frühjahr Formularvalidierung zu tun, aber ich bin immer:
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 habe ich:
@NotNull
@Past
@DateTimeFormat(style="S-")
private Date birthdate;
Ich dachte, das Datetimeformat verantwortlich war für das?
Ich bin mit dem Hibernate-Validator 4.0.
Lösung
Theres eine Chance, dass Sie eine CustomDateEditor
in Ihrem Controller (n) verwenden müssen werden erst registrieren, einen String in ein Datum zu konvertieren. Das beispielhafte Verfahren unten in Ihrem Controller geht, aber Sie werden das Datumsformat zu Spiel ändern müssen, was auch immer Sie verwenden.
@InitBinder
public void initBinder(WebDataBinder binder) {
CustomDateEditor editor = new CustomDateEditor(new SimpleDateFormat("MM/dd/yyyy"), true);
binder.registerCustomEditor(Date.class, editor);
}
Andere Tipps
Um den Einsatz @DateTimeFormat
müssen Sie FormattingConversionServiceFactoryBean
installieren. <mvc:annotation-driven>
tut es implizit, aber wenn Sie es nicht Sie etwas brauchen wie diese verwenden können:
<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>