Проверка валидации Spring 3 MVC BindingResult не содержит ошибок - PullRequest
2 голосов
/ 18 июня 2010

Я пытаюсь запустить проект 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 и пустыми полями.

Какие шаги мне не хватает, чтобы проверка работала?

1 Ответ

1 голос
/ 18 июня 2010

<mvc:annotation-driven /> должно быть в ...-servlet.xml, а не в applicationContext.xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...