Olá estou com um problema um tanto estranho aqui na aula 12. Ao clicar em comprar é chamado meu /carrinho/add, e em seguida recebo HTTP Status 400 - The request sent by the client was syntactically incorrect. No console do tomcat não aparece nenhum tipo de erro nem nada do tipo. Alguém tem uma dica do que pode ser?
Outra dúvida que tenho é em relação ao problema apresentado na aula 12 sobre o tipoPreco, o qual o nome no jsp não era o mesmo. Como o layout da casa do código não é mais o mesmo e não existem mais selects, meu jsp ficou assim.
detalhe.jsp:
<form action="<c:url value="/carrinho/add" />" method="POST" class="adicionarAoCarrinho">
<ul class="adicionarAoCarrinho-listaOfertas">
<input type="hidden" value="${produto.id}" name="produtoId" />
<c:forEach items="${produto.precos}" var="preco">
<li class="adicionarAoCarrinho-oferta" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<label class="adicionarAoCarrinho-infosDaOferta" for="product-variant-970167977">
<span class="adicionarAoCarrinho-tipoDaOferta"
role="presentation"
itemprop="category"
itemscope itemtype="http://schema.org/Ebook" >
<span class="adicionarAoCarrinho-tipoDaOferta-nome">
${preco.tipo}
</span>
<small class="adicionarAoCarrinho-tipoDaOferta-detalhe">
(.pdf, .epub e .mobi)
</small>
</span>
<p class="adicionarAoCarrinho-preco">
<small class="adicionarAoCarrinho-preco-promocao">
<del class="adicionarAoCarrinho-preco-promocao-valor">R$ 39,90</del> por
</small>
<span class="adicionarAoCarrinho-preco-valor" itemprop="price">
${preco.valor}
</span>
</p>
</label>
<button class="adicionarAoCarrinho-botaoComprar" type="submit" name="tipoPreco" value="970167977" title="Compre o E-book">
Comprar
</button>
</c:forEach>
</li>
</ul>
</form>
CarrinhoComprasController.java
package br.com.casadocodigo.loja.controller;
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.context.WebApplicationContext;
import org.springframework.web.servlet.ModelAndView;
import br.com.casadocodigo.loja.dao.ProdutoDAO;
import br.com.casadocodigo.loja.model.CarrinhoCompras;
import br.com.casadocodigo.loja.model.CarrinhoItem;
import br.com.casadocodigo.loja.model.Produto;
import br.com.casadocodigo.loja.model.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;
}
@RequestMapping(method=RequestMethod.GET)
public ModelAndView itens() {
return new ModelAndView("/carrinho/itens");
}
private CarrinhoItem criaItem(Integer produtoId, TipoPreco tipoPreco) {
Produto produto = produtoDAO.find(produtoId);
CarrinhoItem carrinhoItem = new CarrinhoItem(produto, tipoPreco);
return carrinhoItem;
}
}