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");
}
}
}