Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Informática para Internet / Desenvolvimento Web I / Aula
Iremos agora implementar a funcionalidade de alterar o carrinho de compras para permitir que o usuário tenha a possibilidade de modificar a quantidade de cada item do seu carrinho de compras diretamente na tela de “Visualizar Carrinho”. Iremos implementar esse recurso adicionando duas figuras (com os símbolos “+” e “-”), ao lado da quantidade de cada livro, que quando acionados irão ser mapeados para as funções de incrementar e decrementar a quantidade, respectivamente. O primeiro código a ser modificado será o do arquivo mostrarCarrinho.jsp. O código abaixo contém todas as alterações que foram feitas no arquivo (em seguida, as modificações serão explicadas).
<%@ include file="/cabecalho.jsp" %>
<jsp:useBean id="livrariaBean" class="livraria.negocio.LivrariaBean" scope="page" >
<jsp:setProperty name="livrariaBean" property="sistema" value="${sistemaLivraria}" />
</jsp:useBean>
<c:if test="${param.limpar == 'limpar'}">
<font color="red" size="+2">
<strong>O carrinho de compras foi esvaziado!</strong><br> <br>
</font>
</c:if>
<c:if test="${param.remover != '0' && param.remover != null}">
<c:set var="id" value="${param.remover}"/>
<jsp:setProperty name="livrariaBean" property="idLivro" value="${id}" />
<c:set var="livroRemovido" value="${livrariaBean.livro}" />
<font color="red" size="+2">O seguinte livro foi removido do carrinho:
<em>${livroRemovido.titulo}</em>.
<br> <br>
</font>
</c:if>
<c:if test="${sessionScope.cart.numeroItens > 0}">
<font size="+2">Quantidade de itens do carrinho: ${sessionScope.cart.numeroItens}
<c:if test="${sessionScope.cart.numeroItens == 1}">
livro.
</c:if>
<c:if test="${sessionScope.cart.numeroItens > 1}">
livros.
</c:if>
</font><br>
<table summary="layout">
<tr>
<th align=left colspan="3">Quantidade</th>
<th align=left>Título</th>
<th align=left>Preço</th>
</tr>
<c:forEach var="itemCompra" items="${sessionScope.cart.itens}">
<c:set var="livro" value="${itemCompra.item}" />
<tr>
<td bgcolor="#ffffff">
<c:url var="url" value="/livros/mostrarCarrinho" >
<c:param name="alterar" value="${livro.idLivro}" />
<c:param name="quantidade" value="1" />
<c:param name="remover" value="0" />
</c:url>
<a href="${url}" style="text-decoration: none;">[+]</a>
</td>
<td bgcolor="#ffffff">
<c:url var="url" value="/livros/mostrarCarrinho" >
<c:param name="alterar" value="${livro.idLivro}" />
<c:param name="quantidade" value="-1" />
<c:param name="remover" value="0" />
</c:url>
<a href="${url}" style="text-decoration: none;">[-]</a>
</td>
<td align="left" bgcolor="#ffffff">${itemCompra.quantidade}</td>
<td bgcolor="#ffffaa">
<c:url var="url" value="/livros/detalhesLivro" >
<c:param name="idLivro" value="${livro.idLivro}"/>
<c:param name="Clear" value="0"/></c:url>
<strong><a href="${url}">${livro.titulo}</a></strong>
</td>
<td bgcolor="#ffffaa" align="right">
<fmt:formatNumber value="${livro.preco}" type="currency"/>
</td>
<td bgcolor="#ffffaa">
<c:url var="url" value="/livros/mostrarCarrinho" >
<c:param name="remover" value="${livro.idLivro}"/></c:url><strong><a href="${url}">Remover</a></strong>
</td>
</tr>
</c:forEach>
<tr>
<td colspan="5" bgcolor="#ffffff"><br></td>
</tr>
<tr>
<td colspan="2" align="right" bgcolor="#ffffff">Subtotal</td>
<td bgcolor="#ffffaa" align="right">
<fmt:formatNumber value="${sessionScope.cart.total}" type="currency"/>
</td>
<td><br></td>
</tr>
</table>
<p> <p>
<c:url var="url" value="/livros/catalogo" >
<c:param name="Add" value="" />
</c:url>
<strong>
<a href="${url}">Continuar comprando</a>
<c:url var="url" value="/livros/comprar" />
<a href="${url}">Finalizar compra</a>
<c:url var="url" value="/livros/mostrarCarrinho">
<c:param name="limpar" value="limpar"/>
<c:param name="remover" value="0"/>
</c:url>
<a href="${url}">Esvaziar carrinho</a>
</strong>
</c:if>
<c:if test="${sessionScope.cart.numeroItens <= 0}">
<font size="+2">Carrinho vazio</font>
<br> <br>
<c:url var="url" value="/livros/catalogo" >
<c:param name="Add" value="" />
</c:url>
<strong><a href="${url}">Ver catálogo</a></strong>
</c:if>
<%@ include file="/rodape.jsp" %>
A primeira modificação é relativa à tabela HTML. Na coluna “Quantidade”, faremos com que ela ocupe três colunas, pois iremos adicionar mais duas células em cada linha (além da que já guarda a informação de quantidade), uma para o símbolo do “+” e outra para o “-”.
Dentro do ForEach, necessitamos adicionar essas duas novas células (tags ) . Basicamente, incluímos uma imagem com um link para a própria URL de mostrarCarrinho (pois o carrinho vai continuar sendo exibido). No entanto, dessa vez, iremos passar dois parâmetros chamados “alterar” e “quantidade”. O primeiro guarda o código do livro a ter sua quantidade modificada e o outro guarda a quantidade desse livro a ser incrementada no carrinho.
Versão 5.3 - Todos os Direitos reservados