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
Vamos começar com a implementação da funcionalidade de apresentação do conteúdo do carrinho de compras. Considere a tela apresentada pela Figura 1. Dado que foi colocado livros no carrinho de compras, podemos, agora, acessar o link “Ver carrinho de compras” para visualizar o conteúdo do carrinho. A tela que apresenta o conteúdo do carrinho de compras é mostrada na Figura 2.
Para implementar a tela que mostra o conteúdo do carrinho, precisamos criar o arquivo mostrarCarrinho.jsp na pasta livros (lembre de sempre adicionar o cabecalho.jsp e rodape.jsp on inicio e fim dos seus JSPs com a diretiva <%@ include >). Vamos estudar agora o conteúdo desse arquivo, começando pela declaração do LivrariaBean:
<jsp:useBean id="livrariaBean" class="livraria.negocio.LivrariaBean" scope="page" >
<jsp:setProperty name="livrariaBean" property="sistema" value="${sistemaLivraria}" />
</jsp:useBean>
Esse código é o mesmo utilizado na página de catálogo, servindo para criar e configurar o bean LivrariaBean. Já para mostrar o conteúdo do carrinho, primeiro, vamos confirmar que o carrinho está, realmente, com algum conteúdo. Esse teste é feito no código abaixo (<c:if >), mostrando, inclusive, a quantidade de itens existente no carrinho (${sessionScope.cart.numeroItens}). Note que a decisão sobre o uso do singular (1 livro) ou plural (2 livros, por exemplo) também é feita usando o comando <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>
Em seguida, montamos uma tabela com um cabeçalho indicando as informações a serem apresentadas:
</font><br>
<table summary="layout">
<tr>
<th align="left">Quantidade</th>
<th align="left">Título</th>
<th align="left">Preço</th>
</tr>
Depois disso, devemos apresentar os itens do carrinho, certo? Isso é feito usando uma instrução <c:forEach > para navegar nos itens do carrinho (objetos do tipo ItemCompra). Para cada item de compra, o livro é pego e armazenado. Informações como título e preço são apresentadas. Um link para visualizar os detalhes de cada livro e outro para removê-lo do carrinho também estão sendo criados usando-se a instrução <c:url >:
<c:forEach var="itemCompra" items="${sessionScope.cart.itens}">
<c:set var="livro" value="${itemCompra.item}" />
<tr>
<td align="right" 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>
Além disso, temos que mostrar o total do valor da compra. Lembre-se de que o carrinho de compras tem um método chamado getTotal() para isso (${sessionScope.cart.total}):
<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>
Versão 5.3 - Todos os Direitos reservados