Я пытаюсь запустить проект Spring 3.0.2 WebMVC с новой аннотированной поддержкой валидации. У меня есть сущность Hibernate с комментариями:
@Entity
@Table(name = "client")
public class Client implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "clientId", nullable = false)
@NotEmpty
private Integer clientId;
@Basic(optional = false)
@Column(name = "firstname", nullable = false, length = 45)
@NotEmpty
@Size(min=2, max=45)
private String firstname;
... more fields, getters and setters
}
Я включил поддержку аннотаций mvc в моем файле applicationContext.xml:
<mvc:annotation-driven />
И у меня в контроллере есть метод, который отвечает на отправку формы:
@RequestMapping(value="/addClient.htm")
public String addClient(@ModelAttribute("client") @Valid Client client, BindingResult result) {
if(result.hasErrors()) {
return "addClient";
}
service.storeClient(client);
return "clientResult";
}
Когда мое приложение загружается на сервер, я вижу в файле журнала сервера, что оно загружает валидатор:
15 [http-8084-2] INFO org.hibernate.validator.util.Version - Hibernate Validator 4.0.2.GA
Проблема, с которой я столкнулся, заключается в том, что валидатор, похоже, не срабатывает. Я включил отладчик, и когда я попадаю в метод контроллера, BindingResult содержит 0 ошибок после отправки пустой формы. (BindingResult действительно показывает, что он содержит объект Client в качестве цели.) Затем он продолжает вставлять запись без идентификатора и выдает исключение. Если я заполняю Id, но оставляю имя пустым, создается запись с Id и пустыми полями.
Какие шаги мне не хватает, чтобы проверка работала?