Não consigo mandar o produto para o carrinho, é como se o hibernate não encontrasse o livro para mandar para o ItemCompra. Alguém pode me ajudar?
form detalhe-livro
<form method="POST" class="adicionarAoCarrinho" jsf:id="comprar">
<p class="adicionarAoCarrinho-preco">
<small class="adicionarAoCarrinho-preco-promocao">
<del class="adicionarAoCarrinho-preco-promocao-valor">R$ 1099,90</del> por
</small>
<span class="adicionarAoCarrinho-preco-valor" itemprop="price">
R$ #{livroDetalheBean.livro.preco}
</span>
</p>
</label>
<h:outputText value="#{livroDetalheBean.id}" />
<button class="adicionarAoCarrinho-botaoComprar" type="submit" title="Compre o E-book" jsf:action="#{carrinhoComprasBean.add(livroDetalheBean.id)}">
Comprar
</button>
CarrinhoComprasBean
@Model
public class CarrinhoComprasBean {
@Inject
private LivroDao dao;
@Inject
private CarrinhoCompras carrinho;
public String add(Integer id) {
Livro livro = dao.buscaPorId(id);
ItemCompra item = new ItemCompra(livro);
carrinho.add(item);
return "carrinho?faces-redirect=true";
}
public List<ItemCompra> getItens() {
return new ArrayList<ItemCompra>(carrinho.getItens());
}
}
CarrinhoCompras
@SessionScoped
@Named
public class CarrinhoCompras implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private Set<ItemCompra> itens = new HashSet<>();
public void add(ItemCompra item)
{
itens.add(item);
}
public List<ItemCompra> getItens() {
return new ArrayList<ItemCompra>(itens);
}
}
carrinho.xhtml
<ui:repeat var="itemCompra" value="#{carrinhoComprasBean.itens}">
<tr>
<td class="formularioDoCarrinho-item">
<a href="#{request.contextPath}/livro-detalhe.xhtml?id=#{itemCompra.livro.id}" >
<img class="formularioDoCarrinho-item-imagem" src="" />
</a>
</td>
<td class="formularioDoCarrinho-item">
<h2 class="formularioDoCarrinho-item-titulo">#{itemCompra.livro.titulo}</h2>
</td>
<td class="formularioDoCarrinho-item formularioDoCarrinho-item-preco">R$ #{itemCompra.livro.preco}</td>
<td class="formularioDoCarrinho-item">
<input class="formularioDoCarrinho-item-quantidade"
type="number"
min="0"
value="#{carrinhoItem.quantidade}" />
</td>
<td class="formularioDoCarrinho-item formularioDoCarrinho-item-precoTotal" title="Preço unitário: #{itemCompra.livro.preco}">R$#{itemCompra.livro.preco}</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>
ItemCompra
@Model
public class ItemCompra {
private Livro livro;
private Integer quantidade;
public ItemCompra(Livro livro) {
this.livro = livro;
this.quantidade=2;
}
public Livro getLivro() {
return livro;
}
public void setLivro(Livro livro) {
this.livro = livro;
}
public Integer getQuantidade() {
return quantidade;
}
public void setQuantidade(Integer quantidade) {
this.quantidade = quantidade;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((quantidade == null) ? 0 : quantidade.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ItemCompra other = (ItemCompra) obj;
if (quantidade == null) {
if (other.quantidade != null)
return false;
} else if (!quantidade.equals(other.quantidade))
return false;
return true;
}
}