Вот ответ, который я искал, я не понимал, что Spring по умолчанию будет принимать все параметры из отправки формы (например, «имя» и «фамилия») и может создать объект для Вы вызываете методы установки этих параметров.
Контроллер:
@Controller
public class MyFormProcessor {
@RequestMapping("/formsubmit")
public String handleForm(@Valid Person person, BindingResult errors, Map<String,Object> model){
// ...handle form...
}
}
Spring по существу выполняет следующую магию перед вызовом handleForm
для этого запроса (очевидно, более расширяемым способом, чем я изображаю для этого простого примера):
Person person = new Person();
person.setFirstname( request.getParameter("firstname") );
person.setLastname( request.getParameter("lastname") );
handleForm(person, anErrorsObject, new Model());
Для проверки вы можете либо создать свой собственный валидатор (о котором я здесь ничего не упомяну), либо, если вы включите Hibernate Validator в classpath, тогда вы можете аннотировать класс Person
(пример ниже), и когда вы добавьте аннотацию @Valid
, как я изображал в приведенном выше примере, валидатор Hibernate проверит класс на основе этих аннотаций и опубликует любые ошибки в объекте ошибок (объект BindingResult
является расширением Springs 'Errors
, и для Простые примеры: объект Errors
является интересным компонентом).
JSR-303 аннотированный класс Person (для использования с опцией @Valid):
public class Person {
@NotNull
@Size(min=3, max=20)
private String firstname;
@NotNull
@Size(min=3, max=20)
private String lastname;
// ... getters & setters ...
}