Spring MVC + Hibernate Validator + Скорость - PullRequest
3 голосов
/ 10 марта 2011

Я не могу получить базовую проверку работы с Spring MVC.

У меня есть следующий POJO:

public class Example {

    @NotNull(message="You must enter a value")
    @Size(min=2, max="2", message="You must enter 2 characters")
    private String value;

    public String getValue() { return value; }
    public void setValue(String value) { this.value = value; }

}

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

@Controller
@RequestMapping("/value.vm")
public class ValueController {

    @Autowired
    private Validator validator;

    @RequestMapping()
    public ModelAndView display(@Valid @ModelAttribute("example") Example e, BindingResult result) {
        //Details omitted
    }

Мой шаблон скорости одинаково прост:

<form target="_self" enctype="application/x-www-form-urlencoded" action="/value.vm" method="post">
    #springBind("example")
    #springFormInput("example.value", "")
    #springShowErrors("<br />", "")
</form>

Мой файл servlet.xml содержит:

<mvc:annotation-driven />

Если я вручную проверяю отправку пустой формы (то есть валидатор.validate (e)), я вижу, что мои сообщения об ошибках генерируются, однако они никогда не существуют в моем BindingResult.

Есть идеи, почему в результате моего связывания не получаются эти ошибки?

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Я ошибочно использовал:

javax.validation.Validator 

Когда мне нужно было использовать

org.springframework.validation.Validator

Переход на эту версию и изменение кода проверки на:

validator.validate(e, result);

решил мою проблему.

0 голосов
/ 10 марта 2016

Вы все еще можете использовать аннотацию JSR 303 @Valid для автоматического запуска проверки с использованием javax.validation.Validator, не вызывая ее вручную.

Это включено по умолчанию весной, если вы включите элемент <mvc:annotation-driven/> в свое приложениеcontext или @EnableWebMvc, когда вы используете конфигурацию Java

. Чтобы это работало, вам нужно иметь реализацию для API проверки бинов, например Hibernate Validator

...