Пружина MVC и JSR 303 - PullRequest
       16

Пружина MVC и JSR 303

5 голосов
/ 15 ноября 2010

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

@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;
    }
}

1 Ответ

12 голосов
/ 15 ноября 2010

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

public class Bean {
    @NotBlank
    private String name;
}

public class Foo {
    @Valid
    private Bean bean;
}

public class FormObject {
    @Valid
    private Foo foo;
}
...