Fala galera ! não to conseguindo remover itens do carrinho de compras , simplemeste o método remove , nao está funcionando para mim, a pagina so recarrega com os itens novamente , embora esteje passando pelo método remover e alimentando os objetos corretamente, segue os codigos .
package br.casadocodigo.loja.models;
import br.casadocodigo.loja.controllers.CarrinhoItem;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Component;
import org.springframework.web.context.WebApplicationContext;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
@Component
@Scope(value=WebApplicationContext.SCOPE_SESSION, proxyMode= ScopedProxyMode.TARGET_CLASS)
public class CarrinhoCompras implements Serializable {
private static final long serialVersionUID = 1L;
private Map<CarrinhoItem, Integer> itens = new LinkedHashMap<CarrinhoItem, Integer>();
public void add (CarrinhoItem item){
itens.put(item, getQuantidade(item) + 1);
}
public int getQuantidade(CarrinhoItem item) {
if(!itens.containsKey(item)){
itens.put(item, 0);
}
return itens.get(item);
}
public int getQuantidade(){
return itens.values().stream().reduce(0, (proximo, acumulador) -> (proximo + acumulador));
}
public Collection<CarrinhoItem> getItens() {
return itens.keySet();
}
public void setItens(Map<CarrinhoItem, Integer> itens) {
this.itens = itens;
}
public BigDecimal getTotal(CarrinhoItem item){
return item.getTotal(getQuantidade(item));
}
public BigDecimal getTotal(){
BigDecimal total = BigDecimal.ZERO;
for (CarrinhoItem item : itens.keySet()) {
total = total.add(getTotal(item));
}
return total;
}
public void remover(Integer produtoId, TipoPreco tipoPreco) {
Produto produto = new Produto();
produto.setId(produtoId);
itens.remove(new CarrinhoItem(produto,tipoPreco));
}
}
@RequestMapping("/remover")
public ModelAndView remover(Integer produtoId , TipoPreco tipoPreco ){
carrinho.remover(produtoId , tipoPreco);
return new ModelAndView("redirect:/carrinho");
}
<c:forEach items="${carrinhoCompras.itens }" var="item" >
<tr>
<td class="formularioDoCarrinho-item">
<a href="/products/livro-web-services-rest">
<img class="formularioDoCarrinho-item-imagem" src="//cdn.shopify.com/s/files/1/0155/7645/products/wv3KXH7UbTZekuaCTSDj_sIcXB-c4iy37jj7vhCbYCg_size_mode_3_size_800x600_small.jpeg?v=1460748537" />
</a>
</td>
<td class="formularioDoCarrinho-item">
<h2 class="formularioDoCarrinho-item-titulo">${item.produto.titulo}</h2>
</td>
<td class="formularioDoCarrinho-item formularioDoCarrinho-item-preco">R$ ${item.preco}</td>
<td class="formularioDoCarrinho-item">
<input class="formularioDoCarrinho-item-quantidade"
type="number"
min="0"
id="updates_19467336775"
name="updates[19467336775]"
value="${carrinhoCompras.getQuantidade(item)}">
</td>
<td class="formularioDoCarrinho-item formularioDoCarrinho-item-precoTotal" title="Preço unitário: R$69,90">R$ ${carrinhoCompras.getTotal(item)}</td>
<td class="formularioDoCarrinho-item">
<form action="${s:mvcUrl('CCC#remover').arg(0, item.produto.id).arg(1,item.tipo).build() }" method="post">
<input type="image" src="//cdn.shopify.com/s/files/1/0155/7645/t/232/assets/trash.png?1961868959706152171" alt="Excluir" title="Excluir" />
</form>
</td>
</tr>
</c:forEach>