Spring Validator e BindingResult

Olá amigos do GUJ.

Quando provoco o erro na aplicação para acionar o validator do Spring, deveria obter o erro no método bindingResult.hasErrors(), porém ele não está sendo chamado.

De acordo com o livro, fiz os seguintes passos:
1 - Implementei uma classe com org.springframework.validation.Validator
2 - Adicionei a anotação @Valid no meu método no controle
3 - Adicionei o parâmetro BindingeResult no meu método no controle
4 - Adicionei um método com a anotação @InitBinder e dando um setValidator na minha classe

Se alguém aew puder dar uma ajuda quanto a este erro.

Segue um pedaço dos códigos abaixo. Sigo o livro Spring MVC Domine o Principal Framework.

    @InitBinder
public void initBinder(WebDataBinder binder){
    binder.setValidator(new ProductValidator());
}

@RequestMapping(method=RequestMethod.POST)
public ModelAndView save(@ModelAttribute("product") @Valid Product product, 
                                                           RedirectAttributes redirectAttributes, 
                                                           BindingResult bindingResult){
    if ( bindingResult.hasErrors() ){
        return new ModelAndView("AOUEAOUEOUAOUE");
    }
    redirectAttributes.addFlashAttribute("sucesso","Produto Cadastrado com Sucesso");
    productDao.save(product);
    return new ModelAndView("redirect:produtos");
}




 public class ProductValidator implements Validator {

public boolean supports(Class<?> arg0) {
    // TODO Auto-generated method stub
    return Product.class.isAssignableFrom(arg0);
}

public void validate(Object arg0, Errors arg1) {
    // TODO Auto-generated method stub
    ValidationUtils.rejectIfEmptyOrWhitespace(arg1,"title","field.required");
    ValidationUtils.rejectIfEmptyOrWhitespace(arg1, "description", "field.required");
    
    Product product = (Product) arg0;
    
    if ( product.getPages() == 0 ){
        arg1.rejectValue("pages", "field.required");
    }
    
}

}

O bindingResult deve vir logo após do @Valid. Pela data da pergunta vc ja deve saber o porque, mas eu respondi só pra mandar pro Resolvido. Fiquei quebrando a cabeça nisso