Ajuda - session e carrinho de compras JSF

0 respostas
andersonsv

Olá amigos, estou precisando de ajuda e creio que vocês podem me ajudar.
Tenho um projeto onde possui um carrinho de compras com sessão. A sessão está funcionando perfeitamente, mas tem um detalhe, sempre que adiciono um novo item a lista do carrinho de compras ele substitui o item anterior e somente consigo adicionar um elemento.
Vou disponibilidade do código e agradeço desde já!

Getters e setters da classe item pedido

public class UspItemPedidoSelecaoOUT {
	private Integer codPedido;
	private Integer codProduto;
	private BigDecimal numPreco;
	private Integer numTotal;
	private String nomProduto;
	private String desImagem;

	//...getters e setters
}

Classe carrinho de compras - que fica armazenada na sessão

public class Carrinho {
	private List<UspItemPedidoSelecaoOUT> listaCarrinho = new ArrayList<UspItemPedidoSelecaoOUT>();

	public List<UspItemPedidoSelecaoOUT> getListaCarrinho() {
		return listaCarrinho;
	}

	public void setListaCarrinho(List<UspItemPedidoSelecaoOUT> listaCarrinho) {
		this.listaCarrinho = listaCarrinho;
	}
	
	public List<UspItemPedidoSelecaoOUT> getCarrinhoFromSession () {
		
		Carrinho carrinho;
		carrinho = (Carrinho) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("carrinho"); 
		return carrinho.getListaCarrinho();		
	}	
}

metodo que recupera o carrinho

public List listar(){
		FacesContext context = FacesContext.getCurrentInstance();
		ResourceBundle bundle = ResourceBundle.getBundle("com.projeto.mercearia.resources.multilanguage.Messages", context.getViewRoot().getLocale());
		try {
			
			Carrinho carrinho = new Carrinho();
			
			this.setCarrinhoFechamento(carrinho.getCarrinhoFromSession());

			
		} catch (Exception e) {
			e.printStackTrace(); // exibe erro no console
			context.addMessage(null, new FacesMessage(bundle.getString("error_general"))); // adiciona mensagem p/ ser mostrada na tela
		} finally {
			return carrinhoFechamento;
		}
	}

método que seta um novo valor no carrinho *creio que o erro possa estar aqui *

public String adicionarProduto(){
		Carrinho carrinho = new Carrinho();
		carrinho.getListaCarrinho().add(itemPedidoSelecaoOUT);
		HttpServletRequest request = (HttpServletRequest)javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getRequest();
     	HttpSession session = request.getSession();
		session.setAttribute("carrinho", carrinho);
		return "success";

	}

chamada jsf do método para adicionar produto ao carrinho

<a4j:commandLink value="comprar" 
                    						 styleClass="txtNormal" 
                    						 style="color:blue"
                    						 action="#{ProdutoMB.adicionarProduto}">
                    			<a4j:actionparam 	name="codProduto" 
                    								value="#{produto.codProduto}" 
                    								assignTo="#{ProdutoMB.itemPedidoSelecaoOUT.codProduto}"/>
                    			<a4j:actionparam 	name="nome"	   
                    								value="#{produto.nomProduto}" 
                    								assignTo="#{ProdutoMB.itemPedidoSelecaoOUT.nomProduto}"/>
                    			<a4j:actionparam 	name="preco"	   
                    								value="#{produto.numPreco}"   
                    								assignTo="#{ProdutoMB.itemPedidoSelecaoOUT.numPreco}"/>
                    			<a4j:actionparam 	name="imagem"	   
                    								value="#{produto.desImagem}"  
                    								assignTo="#{ProdutoMB.itemPedidoSelecaoOUT.desImagem}"/>
                    			<a4j:actionparam 	name="numTotal"	   
                    								value="#{produto.desImagem}"  
                    								assignTo="#{ProdutoMB.itemPedidoSelecaoOUT.numTotal}"/>
                    		</a4j:commandLink>

muito obrigado e abraço a todos!

Criado 15 de novembro de 2008
Respostas 0
Participantes 1