2010-01-16 8 views
14

Ich habe <mvc:annotation-driven /> in Dispatcher-Servlet angegeben. Ich verwende nicht @InitBinder.
Und ich bin mit @valid Anmerkung für die Validierung in der Methode der Steuerung wieKeine Fehlermeldungen bei der Validierung mit @valid (JSR-303) in Spring MVC

@RequestMapping(method = RequestMethod.POST, value = "new") 
    public String save(@Valid Article article,ModelMap model) { 
//code here 
} 

und Validierung funktioniert, in Ordnung, aber statt Fehler zu zeigen, in .. Probe in HTML-Code angezeigt

<tr> 
     <td>Title</td> 
     <td><form:input path="title"/></td> 
     <td><form:errors path="title"/></td> 
</tr> 

Es wirft Ausnahme wie ..

org.springframework.web.util.NestedServletException: Request-Verarbeitung gescheitert; nested Ausnahme ist org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 Fehler Feldfehler in Objekt 'Artikel' auf dem Feld 'urlInfo.url': abgelehnt Wert []; Codes [typeMismatch.article.urlInfo.url, typeMismatch.urlInfo.url, typeMismatch.url, typeMismatch.java.net.URL, typeMismatch]; Argumente [org.springframework.context.support.DefaultMessageSourceResolvable: Codes [article.urlInfo.url, urlInfo.url]; Argumente []; Standardnachricht [urlInfo.url]]; Standardmeldung [Fehler beim Konvertieren des Eigenschaftswerts Geben Sie 'java.lang.String' in den erforderlichen Typ 'java.net.URL' für die Eigenschaft 'urlInfo.url'; verschachtelte Ausnahme ist org.springframework.core.convert.ConversionFailedException: Konnte Wert vom Typ 'java.lang.String' nicht umwandeln, um 'java.net.URL' einzugeben; verschachtelte Ausnahme ist org.springframework.core.convert.ConversionFailedException: Konnte Wert vom Typ 'java.lang.String' nicht umwandeln, um 'java.net.URL' einzugeben; geschachtelte Ausnahme ist java.lang.reflect.InvocationTargetException] Feldfehler im Objekt 'Artikel' auf Feld 'Titel': abgelehnten Wert []; Codes [Size.article.title, Size.title, Size.java.lang.String, Size]; Argumente [org.springframework.context.support.DefaultMessageSourceResolvable: Codes [article.title, Titel]; Argumente []; Standardnachricht [Titel], {javax.validation.constraints.Size.message}, 6, [Ljava.lang.Class; @ 1db3aac, 2147483647, [Ljava.lang.Class; @ 1e90abf]; Standardmeldung [Größe muss zwischen 6 und 2147483647]

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659) 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) 
org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213) 
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171) 
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) 
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) 
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381) 
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) 

Wie es zu konfigurieren, nicht eine Ausnahme werfen und zurück statt zu Seite und zeigen Fehlermeldungen ...

+0

Wie haben Sie die Validierung aktiviert?Verwenden Sie '@ InitBinder' auf Ihrem Controller oder' 'in Ihrem Kontext? Welches auch immer Sie verwenden, bitte fügen Sie diese Bits zu Ihrer Frage hinzu. – skaffman

Antwort

16

Sie sollten explizit entscheiden, was mit Validierungsfehlern zu tun ist:

@RequestMapping(method = RequestMethod.POST, value = "new") 
public String save(@Valid Article article, BindingResult result, ModelMap model) { 
    if (result.hasErrors()) 
     return "formView"; 
17

Stellen Sie in Ihrer Controller-Handler-Methode sicher, dass das BindingResult-Argument unmittelbar nach der Kommunikation ist und Argument.

+1

Das war die richtige Antwort für mich. –

+0

Sehr seltsam, aber das hat auch für mich funktioniert. Mir wurde immer gesagt, dass Spring die Parameter der Controller-Methode selbst herausfinden kann und ich mich nie darum kümmern müsste! Dies ist jedoch mindestens ein Fall, in dem die Reihenfolge der Parameter die Ausführung beeinflusst! – Jaywalker

Verwandte Themen