2010-11-15 23 views
5

Estoy usando Spring 3 y JSR 303. Tengo un objeto de respaldo de formulario cuyos objetos anidados necesitan validarse. En el ejemplo a continuación, ¿cómo valido formObject.getFoo(). GetBean()? Cuando ejecuto el código a continuación, el parámetro de resultado siempre está vacío, incluso si la página HTML no envía nada, cuando la validación debería fallar. Tenga en cuenta que funciona (es decir, la validación falla) cuando la valide manualmente llamando al validate(formObject.getFoo().getBean(), Bean.class).Spring MVC y 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; 
    } 
} 

Respuesta

12

Si desea validación en cascada hacia abajo en un objeto secundario, entonces usted debe poner la anotación @Valid en el campo en el objeto padre:

public class Bean { 
    @NotBlank 
    private String name; 
} 

public class Foo { 
    @Valid 
    private Bean bean; 
} 

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

Gracias, pero no hubo suerte aquí. –

+0

@Tom - Funciona para mí y está en la especificación. ¿Qué implementación estás usando? – GaryF

+0

Vaya, mi mal. Funciona. ¡Gracias! –

Cuestiones relacionadas