Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Atualizando quantidade carrinho sem usar índice

Consegui atualizar a quantidade do carrinho ao clicar no botão atualizar, sem usar loop.index do varStatus conforme mostrado no vídeo. É realmente preciso usar esse índice?

Apenas coloquei um setter (setQuantidade) no CarrinhoItem, e o meu xhtml ficou assim:

    <form class="formularioDoCarrinho" method="post" jsf:id="formCarrinho">
        <table class="formularioDoCarrinho-tabela">
        <thead class="formularioDoCarrinho-cabecalho">
            <tr>
                <th></th>
                <th class="formularioDoCarrinho-cabecalho-item">Item</th>
                <th class="formularioDoCarrinho-cabecalho-item formularioDoCarrinho-cabecalho-preco">Preço</th>
                <th class="formularioDoCarrinho-cabecalho-item">Qtd</th>
                <th class="formularioDoCarrinho-cabecalho-item">Total</th>
                <th></th>
            </tr>
        </thead>
        <tbody>
            <ui:repeat value="#{carrinhoComprasBean.itens}" var="carrinhoItem">
                <tr>
                    <td class="formularioDoCarrinho-item">
                        <a href="/products/livro-jquery-mobile">
                            <img class="formularioDoCarrinho-item-imagem" src="#{request.contextPath}/file/#{carrinhoItem.livro.capaPath}" />
                        </a>
                    </td>
                    <td class="formularioDoCarrinho-item">
                        <h2 class="formularioDoCarrinho-item-titulo">#{carrinhoItem.livro.titulo}</h2>
                    </td>
                    <td class="formularioDoCarrinho-item formularioDoCarrinho-item-preco">
                        <h:outputText value="#{carrinhoItem.livro.preco}"
                                      id="precoUnitario"><f:convertNumber currencySymbol="R$" type="currency" minFractionDigits="2"/></h:outputText>
                    </td>
                    <td class="formularioDoCarrinho-item">
                        <input class="formularioDoCarrinho-item-quantidade"
                               type="number"
                               min="1"
                               jsf:value="#{carrinhoItem.quantidade}" />
                    </td>
                    <td class="formularioDoCarrinho-item formularioDoCarrinho-item-precoTotal" title="Preço unitário: #{carrinhoItem.livro.preco}">
                        <h:outputText value="#{carrinhoItem.livro.preco}" id="precoCalculado" >
                            <f:convertNumber currencySymbol="R$" type="currency" minFractionDigits="2"/>
                        </h:outputText>
                    </td>
                    <td class="formularioDoCarrinho-item">
                        <a href="https://www.casadocodigo.com.br/cart/change?id=18404155847&quantity=0">
                            <img class="formularioDoCarrinho-item-remover-imagem"  src="#{request.contextPath}/resources/imagens/trash.png" alt="X" title="Remover" />
                        </a>
                    </td>
                </tr>
            </ui:repeat>
        </tbody>
        <tfoot class="formularioDoCarrinho-rodape">
            <tr>
                <td class="formularioDoCarrinho-rodape-item formularioDoCarrinho-finalizar" colspan="3">
                    <button class="formularioDoCarrinho-finalizar-botao" name="checkout">Finalizar<span class="formularioDoCarrinho-finalizar-botao-texto" role="presentation"> compra</span></button>
                </td>
                <td class="formularioDoCarrinho-rodape-item">
                    <button class="formularioDoCarrinho-atualizar">Atualizar</button>
                </td>
                <td class="formularioDoCarrinho-rodape-item">
                    <h:outputText value="#{carrinhoComprasBean.calcularTotalCarrinho()}" id="precoTotalCalculado" >
                        <f:convertNumber currencySymbol="R$" type="currency" minFractionDigits="2"/>
                    </h:outputText>
                </td>
                <td></td>
            </tr>
        </tfoot>
    </table>
</form>
@Model
public class CarrinhoComprasBean {

    @Inject
    private CarrinhoCompras carrinhoCompras;

    @Inject
    private DAO<Livro> dao;

    public String adicionar(Long idLivro) {

        dao.localizarPor(idLivro)
                .ifPresent(carrinhoCompras::adicionar);

        return "carrinho?faces-redirect=true";
    }

    public List<CarrinhoItem> getItens() {
        return carrinhoCompras.listarTodosItens();
    }

    public BigDecimal calcularTotalCarrinho() {
        return carrinhoCompras.calcularTotalCarrinho();
    }
}
1 resposta
solução!

Opa Felipe, não vi exatamente como está o código do curso. Mas se você achou outra solução, é claro que está valendo :).

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software