Após realizar as implementações para as validações dos campos usando os recursos que o Spring proporciona, sistema apresenta a mensagem "HTTP Status 404 - /casadocodigo/produtos" ao tentar abrir qualquer formulário. Implementações:
package br.com.casadocodigo.loja.validation;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
import br.com.casadocodigo.loja.models.Produto;
public class ProdutoValidation implements Validator {
public boolean supports(Class<?> clazz) {
return Produto.class.isAssignableFrom(clazz);
}
public void validate(Object target, Errors errors) {
ValidationUtils.rejectIfEmpty(errors, "titulo", "field.required");
ValidationUtils.rejectIfEmpty(errors, "descricao", "field.required");
Produto produto = (Produto) target;
if (produto.getPaginas() <= 0) {
errors.rejectValue("paginas", "field.required");
}
}
}
@Controller
@RequestMapping("produtos")
public class ProdutosController {
@Autowired
private ProdutoDAO produtoDao;
@InitBinder
public void InitBinder(WebDataBinder binder) {
binder.addValidators(new ProdutoValidation());
}
@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, BindingResult result, RedirectAttributes redirecAttributes ) {
if (result.hasErrors()) {
return form();
}
produtoDao.gravar(produto);
redirecAttributes.addFlashAttribute("sucesso","Produto cadastrado com sucesso");
return new ModelAndView("redirect:produtos");
}
@RequestMapping(method=RequestMethod.GET)
public ModelAndView listar() {
List<Produto> produtos = produtoDao.listar();
ModelAndView modelAndView = new ModelAndView("produtos/lista");
modelAndView.addObject("produtos", produtos);
return modelAndView;
}
}