package br.com.casadocodigo.loja.controllers;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
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.daos.ProdutoDao;
import br.com.casadocodigo.loja.models.Produto;
import br.com.casadocodigo.loja.models.TipoPreco;
@Controller
@RequestMapping("produtos")
public class ProdutosController {
@Autowired //injetado para o Spring //pedimos para o Spring uma instância do objeto que foi anotado
private ProdutoDao produtoDao;
@RequestMapping("/form")
public ModelAndView form() {
ModelAndView modelAndView = new ModelAndView("produtos/form");
modelAndView.addObject("tipos", TipoPreco.values());//tipos será a EL no form
return modelAndView;
}
@RequestMapping(method=RequestMethod.POST)//recebe o get e post do form action=/casadocodigo/produtos
public ModelAndView gravar(Produto produto, RedirectAttributes redirectAttributes) {
System.out.println(produto);
produtoDao.gravar(produto);
//return listar();//sempre depois do post temos q fazer o redirect para nao cair no bug do F5
//nos redirects perdemos o objeto modelAndView pois sao feitos dois requests, nesse caso a soulcao é usar o flash
//modelAndView.addObject("sucesso", "Prod cadastrado com sucesso.");
redirectAttributes.addFlashAttribute("sucesso", "Prod cadastrado com sucesso");
ModelAndView modelAndView = new ModelAndView("redirect:produtos");
return modelAndView;
}
@RequestMapping(method=RequestMethod.GET)//http://localhost:8080/casadocodigo/produtos/
public ModelAndView listar() {
List<Produto> produtos = produtoDao.listar();
ModelAndView modelAndView = new ModelAndView("produtos/lista");
modelAndView.addObject("produtos", produtos);
return modelAndView;
}
}