валидация jsr-303 весной mvc не проверяется - PullRequest
2 голосов
/ 07 марта 2012

У меня проблемы с настройкой формы весной.

Боб, который я хотел бы проверить, выглядит следующим образом:

public class RegistrationForm extends ProjectXUser {
@NotEmpty
private String password2;

@NotBlank
@AssertTrue
private Boolean agreedToConditions;
...

ProjectXUser наследуется от BaseUser, который имеет еще несколько свойств, которые также аннотированы.

Мой контроллер выглядит так:

@Controller
public class RegistrationController {
private static final String REGISTRATION_JSP = "registration";

 @ModelAttribute("registrationForm")
 public RegistrationForm getRegistrationForm() {
    return new RegistrationForm();
 }

 @RequestMapping(value = { "/registratie/jaar", "registratie/proef" }, method = RequestMethod.GET)
 public String year() {
  return "registration";
 }

 @RequestMapping(value = { "/registratie/jaar", "registratie/proef" }, method = RequestMethod.POST)
 public ModelAndView register(@Valid RegistrationForm registrationForm, BindingResult result) {
  if (result.hasErrors()) {
     return new ModelAndView(REGISTRATION_JSP);
  } else {
     return new ModelAndView("redirect:/registratie/success");
  }
 }
}

Файл конфигурации моей пружины содержит:

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
<mvc:annotation-driven />

Я прочитал в весенней документации, что, если в классе path path присутствует валидатор jsr-303, он автоматически обнаружит его и будет использовать. Итак, я добавил hibernate-validator в мой pom.

Но когда я отлаживаю свой контроллер, я вижу, что registrationForm содержит значения, которые я заполнил. Но в результатах всегда 0 ошибок. Даже если я введу какой-то явно неверный ввод в мои поля формы.

Ответы [ 2 ]

0 голосов
/ 20 мая 2015

Если этот бит вашего кода запускается и перенаправляется обратно на вашу страницу регистрации

if (result.hasErrors()) {
    return new ModelAndView(REGISTRATION_JSP);
}

Тогда ваша проверка JSR-303 забирается.Вы должны отобразить свои ошибки на странице JSP, например:

<form:errors path="password2" cssClass="error" />

, где cssClass="error" - это CSS, с которым вы хотите отобразить ошибку.Он автоматически помещается в <div> для вас.

0 голосов
/ 22 марта 2012

Вам необходимо вернуть результат в ModelAndView в случае, если есть ошибки. Все, что вы возвращаете, это пустая мав

См. http://forum.springsource.org/showthread.php?117436-Spring-MVC-3-and-returning-validation-errors-to-page-from-Valid&highlight=bindingresult для примера.

...