Toda vez que aperto para enviar o formulário com nenhum dado está dando esse erro. Segue os códigos fontes:
ProdutoValidacao
package br.com.casadocodigo.loja.validadores;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
import br.com.casadocodigo.loja.models.Produto;
public class ProdutoValidacao implements Validator{
@Override
public boolean supports(Class<?> clazz) {
return Produto.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors e) {
Produto p = (Produto) target;
ValidationUtils.rejectIfEmpty(e, "titulo", "field.required");
ValidationUtils.rejectIfEmpty(e, "descricao", "field.required");
if(p.getPaginas() <= 0) {
e.rejectValue("paginas", "field.required");
}
}
}
ProdutosController
package br.com.casadocodigo.loja.controllers;
import java.util.List;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import br.com.casadocodigo.loja.dao.ProdutoDAO;
import br.com.casadocodigo.loja.models.Produto;
import br.com.casadocodigo.loja.models.TipoPreco;
import br.com.casadocodigo.loja.validadores.ProdutoValidacao;
@Controller
@RequestMapping("/produtos")
public class ProdutosController {
@Autowired
private ProdutoDAO dao;
@InitBinder
public void InitBinder(WebDataBinder wdb) {
wdb.addValidators(new ProdutoValidacao());
}
@RequestMapping("/form")
public ModelAndView form() {
ModelAndView modelAndView = new ModelAndView("produtos/form");
modelAndView.addObject("tipos", TipoPreco.values());
return modelAndView;
}
@RequestMapping(method = RequestMethod.POST)
public ModelAndView gravar(@Valid Produto produto, RedirectAttributes ra, BindingResult br){
if(br.hasErrors()) {
return form();
} else {
dao.gravar(produto);
ModelAndView mv = new ModelAndView("redirect:produtos");
ra.addFlashAttribute("sucesso", "Produto cadastrado com sucesso!");
return mv;
}
}
@RequestMapping( method = RequestMethod.GET)
public ModelAndView listar() {
List<Produto> lista = dao.listar();
ModelAndView mv = new ModelAndView("produtos/lista");
mv.addObject("produtos", lista);
return mv;
}
}