2010-11-15 1 views
5

Я использую Spring 3 и JSR 303. У меня есть объект поддержки формы, чьи вложенные объекты должны быть проверены. В приведенном ниже примере, как я могу проверить formObject.getFoo(). GetBean()? Когда я запускаю приведенный ниже код, параметр результата всегда пуст, даже если HTML-страница ничего не представляет, когда проверка не выполняется. Обратите внимание, что он работает (то есть сбой проверки), когда я проверяю его вручную, вызывая validate(formObject.getFoo().getBean(), Bean.class).Spring MVC и 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; 
    } 
} 

ответ

12

Если вы хотите проверки каскадом вниз в дочерний объект, то вы должны поставить @Valid аннотацию на поле в родительском объекте:

public class Bean { 
    @NotBlank 
    private String name; 
} 

public class Foo { 
    @Valid 
    private Bean bean; 
} 

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

Спасибо, но не повезло здесь. –

+0

@Tom - работает для меня и находится в спецификации. Какую реализацию вы используете? – GaryF

+0

Ой, мой плохой. Оно работает. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^