Boa tarde pessoal, Fiz todos os ajustes conforme dito em aula, quase tudo funcionando. Porém ao tentar finalizar ou retirar um item do carrinho, recebo 404. Percebi que não estou nem entrando no método do PagamentoController para finalizar ou no do Carrinho Controller para remover item do carrinho.
Form para finalizar pagamento
<form action="${s:mvcUrl('PC#finalizar').build()}" method="POST" >
<tr>
<td colspan="3">
<input type="submit" class="checkout" name="checkout"
value="Finalizar compra" />
</td>
<td class="numeric-cell">${carrinhoCompras.total }</td>
</tr>
</form>
Form para remover item
<form action="${s:mvcUrl('CCC#remover').arg(0,item.produto.id).arg(1,item.tipoPreco).build() }" method="post">
<input type="image"src="http:////cdn.shopify.com/s/files/1/0155/7645/t/177/assets/excluir.png?1575580795780530083"
alt="Excluir" title="Excluir" />
</form>
Pagamento Controller
package br.com.casadocodigo.loja.controllers;
import java.util.concurrent.Callable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import br.com.casadocodigo.loja.models.CarrinhoCompras;
import br.com.casadocodigo.loja.models.DadosPagamento;
@RequestMapping("/pagamento")
@Controller
@Scope(value = WebApplicationContext.SCOPE_REQUEST)
public class PagamentoController {
@Autowired
private CarrinhoCompras carrinho;
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value="/finalizar", method=RequestMethod.POST)
public Callable<ModelAndView> finalizar(RedirectAttributes model) {
return () -> {
try {
String uri = "http://book-payment.herokuapp.com/payment";
String response = restTemplate.postForObject(uri, new DadosPagamento(carrinho.getTotal()), String.class);
model.addFlashAttribute("mensagem", response);
System.out.println(response);
} catch (HttpClientErrorException e) {
e.printStackTrace();
model.addFlashAttribute("falha","Valor maior que o permitido");
}
return new ModelAndView("redirect:/");
};
}
}
CarrinhoDeComprasController
package br.com.casadocodigo.loja.controllers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.ModelAndView;
import br.com.casadocodigo.loja.daos.ProdutoDAO;
import br.com.casadocodigo.loja.models.CarrinhoCompras;
import br.com.casadocodigo.loja.models.CarrinhoItem;
import br.com.casadocodigo.loja.models.Produto;
import br.com.casadocodigo.loja.models.TipoPreco;
@Controller
@RequestMapping("/carrinho")
@Scope(value=WebApplicationContext.SCOPE_REQUEST)
public class CarrinhoComprasController {
@Autowired
private ProdutoDAO produtoDAO;
@Autowired
private CarrinhoCompras carrinho;
@RequestMapping("/add")
public ModelAndView add(Integer produtoId, TipoPreco tipoPreco) {
ModelAndView modelAndView = new ModelAndView("redirect:/carrinho");
CarrinhoItem carrinhoItem = criaItem(produtoId, tipoPreco);
carrinho.add(carrinhoItem);
return modelAndView;
}
private CarrinhoItem criaItem (Integer produtoId,TipoPreco tipoPreco) {
Produto produto = produtoDAO.find(produtoId);
CarrinhoItem carrinhoItem = new CarrinhoItem(tipoPreco, produto);
return carrinhoItem;
}
@RequestMapping(method=RequestMethod.GET)
public ModelAndView itens(){
return new ModelAndView("/carrinho/itens");
}
@RequestMapping("/remover")
public ModelAndView remover(Integer produtoId, TipoPreco tipoPreco) {
carrinho.remover(produtoId, tipoPreco);
return new ModelAndView("redirect:/carrinho");
}
}
O que pode ser isso?