2010-11-15 10 views
5

Ich verwende Spring 3 und JSR 303. Ich habe ein Formular Backing-Objekt, deren verschachtelte Objekte überprüft werden müssen. Wie validiere ich im folgenden Beispiel formObject.getFoo(). GetBean()? Wenn ich den folgenden Code ausführe, ist der Ergebnisparameter immer leer, auch wenn die HTML-Seite nichts sendet, wenn die Validierung fehlschlagen sollte. Beachten Sie, dass es funktioniert (d. H. Die Validierung schlägt fehl), wenn ich es manuell durch Aufruf von validate(formObject.getFoo().getBean(), Bean.class) validiere.Spring MVC und JSR 303

@Controller 
public class FormController { 
    @RequestMapping(method = RequestMethod.POST) 
    public void process(HttpServletRequest request, @Valid FormObject formObject, BindingResult result) { 
      ... 
    } 

    // This is the class that needs to be validated. 
    public class Bean { 
     @NotBlank 
     private String name; 
    } 

    public class Foo { 
     private Bean bean; 
    } 

    public class FormObject { 
     private Foo foo; 
    } 
} 

Antwort

12

Wenn Sie Validierung wollen ein untergeordnetes Objekt kaskadieren hinunter in, dann müssen Sie die @Valid Anmerkung auf dem Feld in dem Objekt Eltern setzen:

public class Bean { 
    @NotBlank 
    private String name; 
} 

public class Foo { 
    @Valid 
    private Bean bean; 
} 

public class FormObject { 
    @Valid 
    private Foo foo; 
} 
+0

Danke, aber kein Glück hier. –

+0

@Tom - Funktioniert für mich und ist in der Spezifikation. Welche Implementierung verwenden Sie? – GaryF

+0

Ups, mein Schlechter. Es klappt. Vielen Dank! –

Verwandte Themen