2
respostas

erro aused by: java.lang.NullPointerException at deployment.casadocodigo.war//br.com.casadocodigo.loja.models.CarrinhoCompras.getTotal(CarrinhoCompras.java:56)

Acredito que o curso precisa ser atualizado, sou um dos que está recebendo o erro null na itens.jsp na chamada carrinhoCompras.getTotal(item)

package br.com.casadocodigo.loja.models;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
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;

//anotação para que a classe fique disponivel como bean do spring
@Component
//anotação para que o bean seja criado no escopo de sessão, assim cada usuário que utilizar este bean irá fazê-lo em sua sessão
//sem a anotação os usuários utilizam o mesmo beam, logo os dados acabam sendo compartilhados entre eles
//junto com esta anotação o controller deve receber esta anotação porem com o SCOPE_REQUEST (ver CarrinhoComprasController)
@Scope(value=WebApplicationContext.SCOPE_SESSION)
public class CarrinhoCompras implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = -7177661284533806872L;

    //ligação de chave - valor para relacionar o item do carrinho e a quantidade

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

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

    }

    public Collection<CarrinhoItem>getItens(){
        return itens.keySet();        
    }

    public Integer getQuantidade(CarrinhoItem item) {
        //verifica se o item não existe, e adiciona ele a lista
        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 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;
    }

}

e ainda não vi nenhuma resposta concreta corrigindo este erro. Fica difícil acompanhar as aulas se temos erros que não são explicados ou sem auxilio com os mesmos.

2 respostas

Olá, consegui resolver o erro, podem fechar a questão.

Obrigado.

Fala Wagner, tudo bem?

Como você fez para resolver o problema? Pode ajudar outros alunos

Abraço!