1
resposta

Erro

Mesmo fazendo o que foi feito na aula ainda sim os dados das janelas diferentes do chrome continuam atualizando nas duas.

CONTROLLER

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.web.bind.annotation.RequestMapping; 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:/produtos");
    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(produto, tipoPreco);
    return carrinhoItem;
}

}

CARRINHO

package br.com.casadocodigo.loja.models;

import java.util.LinkedHashMap; import java.util.Map;

import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import org.springframework.web.context.WebApplicationContext;

@Component @Scope(value=WebApplicationContext.SCOPE_SESSION) public class CarrinhoCompras {

private Map<CarrinhoItem, Integer> itens = new LinkedHashMap<CarrinhoItem, Integer>();

public void add(CarrinhoItem item) {
    itens.put(item, getQuantidade(item) + 1);
}

private 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);
}

}

1 resposta

Olá Diego, bom dia. Você utilizou o modo anônimo (CTRL+SHIFT+N) para abrir a nova janela no Chrome? Caso não seja possível tente utilizar outro navegador, como o Internet Explorer ou Firefox.