Olá,
Não estou entendendo porque quando clico no detalhe do produto, a página de detalhe exibe erro ao tentar exibir os preços.
O que pode estar acontecendo?
LISTA DE PRODUTOS
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Lista de Produtos</h1>
<div>${sucesso}</div>
<table>
<tr>
<td>ID</td>
<td>Titulo</td>
<td>Descrição</td>
<td>Página</td>
</tr>
<c:forEach items="${produtos}" var="produto">
<tr>
<td>${produto.id}</td>
<td><a href="${s:mvcUrl('PC#detalhe').arg(0,produto.id).build()}">${produto.titulo}</a></td>
<td>${produto.descricao}</td>
<td>${produto.paginas}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
Detalhe do Produto - detalhe.jsp
<section class="buy-options clearfix">
<form action="/carrinho/add" method="post" class="container">
<ul id="variants" class="clearfix">
<input type="hidden" value="${produto.id}" name="produtoId">
<c:forEach items="${produto.precos}" var="preco">
<li class="buy-option">
<input type="radio" name="tipo" class="variant-radio" id="tipo" value="${preco.tipo}" checked="checked" />
<label class="variant-label"> ${preco.tipo} </label>
<small class="compare-at-price">R$ 39,90</small>
<p class="variant-price">${preco.valor}</p>
</li>
</c:forEach>
</ul>
<%-- --%>
<button type="submit" class="submit-image icon-basket-alt" alt="Compre Agora" title="Compre Agora '${produto.titulo}'"></button>
</form>
</section>
Método detalhe do CONTROLLER
@RequestMapping("/detalhe/{id}")
public ModelAndView detalhe(@PathVariable("id") Integer id) {
ModelAndView modelAndView = new ModelAndView("produtos/detalhe");
Produto produto = produtoDAO.find(id);
String contexto = fileSaver.contexto();
modelAndView.addObject("produto", produto);
modelAndView.addObject("contextPath", contexto + "/");
return modelAndView;
}
Método find() do produtoDAO
public Produto find(Integer id) {
// TODO Auto-generated method stub
return manager.createQuery("select distinct(p) from Produto p "
+ "join fetch p.precos where p.id = :id", Produto.class)
.setParameter("id", id)
.getSingleResult();
}