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.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
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!