Доступ к Spring MVC BindingResult из представления - PullRequest
6 голосов
/ 15 июля 2011

Я ищу способ доступа к BindingResult из представления (в моем случае это страница JSP).

У меня есть следующий метод контроллера:

@RequestMapping(value="/register/accept.html",method=RequestMethod.POST)
public ModelAndView doRegisterAccept(
  @Valid @ModelAttribute("registrationData") RegistrationData registrationData,
  BindingResult bindingResult
) {

  ModelAndView modelAndView         = new ModelAndView();
  modelAndView.addObject("bindingResultXXX", bindingResult);
  modelAndView.setViewName("users/registration/register");
  return modelAndView;

}

При выполнении этого, RegistrationData get заполняется, а ошибки сохраняются в BindingResult. Все идет нормально. Однако мне нужно вручную добавить BindingResult в ModelAndView, чтобы он стал видимым в представлении.

Есть ли способ автоматически добавить BindingResult в модель? Я уже пытался настроить сигнатуру метода на

public ModelAndView doRegisterAccept(
  @Valid @ModelAttribute("registrationData") RegistrationData registrationData,
  @ModelAttribute("bindingResult") BindingResult bindingResult
) {

где я надеялся - как и любой другой параметр - BindingResult будет добавлен в модель под ключом bindingResult, но, к сожалению, это не работает.

Итак, есть идеи?

Добавление

Я только что обнаружил, что результаты действительно публикуются с помощью ключа

org.springframework.validation.BindingResult.<NAME_OF_MODEL_ATTRIBUTE>

так что я полагаю, что добавление его под простым именем не поощряется ребятами из Spring?!

1 Ответ

1 голос
/ 22 июля 2011

Вы должны добавить тег «ошибки» в вашем виде формы, как описано здесь: http://static.springsource.org/spring/docs/3.0.5.RELEASE/reference/view.html#view-jsp-formtaglib-errorstag. Затем в вашем контроллере вы просто ставите тест:

if(bindingResult.hasErrors()) {
   ... display your form page again 
   (and "errors" tags will be populated by validation messages corresponding to each field) ...
}
else {
   ... here, you know that your RegistrationData is valid so you can treat it (save it I guess) ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...