Já tentei de várias maneiras, mas não consegui implementar um carrinho de compras usando struts2, jsp e hibernate. Vou colocar meus códigos aí, se alguém tiver alguma idéia.
public class Produto {
private String imagem;
private String descricao;
private Double preco;
private Integer id;
public Produto(){}
public Produto(String imagem, String descricao, Double preco){
setImagem(imagem);
setDescricao(descricao);
setPreco(preco);
}
public String getImagem() {
return imagem;
}
public void setImagem(String imagem) {
this.imagem = imagem;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Double getPreco() {
return preco;
}
public void setPreco(Double preco) {
this.preco = preco;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class ProdutoDAO {
Session session;
Transaction transaction;
@SuppressWarnings("unchecked")
public List<Produto> listProduto(){
List<Produto> courses = null;
try{
session = HibernateUtil.getSession();
courses = session.createQuery("from Produto").list();
}
catch(Exception e){
e.printStackTrace();
}
return courses;
}
public void saveProduto(Produto produto){
try{
transaction = session.beginTransaction();
session.save(produto);
}
catch(Exception e){
transaction.rollback();
e.printStackTrace();
}
}
/*
Session sessao = HibernateUtil.getSession();
if(sessao == null){
System.out.println("ProdutoDAO: Session not found");
return null;
}
else{
Transaction tx = sessao.beginTransaction();
Query select = sessao.createQuery("from Produto");
List<Produto> produtos = select.list();
tx.commit();
sessao.close();
System.out.println("ProdutoDAO: caregaCabo() executado");
return produtos;
}*/
}
import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class ProdutoAction extends ActionSupport implements ModelDriven<Produto> {
private static final long serialVersionUID = 1L;
private Produto produto = new Produto();
private List<Produto> produtoList = new ArrayList<Produto>();
private ProdutoDAO produtoDAO = new ProdutoDAO();
private List<Produto> carrinhoCompras = new ArrayList<Produto>();
private List<Produto> carrinhoComprasFinal = new ArrayList<Produto>();
@Override
public Produto getModel() {
return produto;
}
public String list(){
produtoList = produtoDAO.listProduto();
System.out.println("metodo list Produto Action deu certo");
return "SUCCESS";
}
public String adicionaItem(){
carrinhoCompras.add(produto);
return "SUCCESS";
}
public String mostraCarrinho(){
carrinhoComprasFinal = carrinhoCompras;
return "SUCCESS";
}
public Produto getProduto(){
return produto;
}
public void setProduto(Produto produto){
this.produto = produto;
}
public List<Produto> getProdutoList(){
return produtoList;
}
public void setProdutoList(List<Produto> produtoList){
this.produtoList = produtoList;
}
public List<Produto> getCarrinhoCompras() {
return carrinhoCompras;
}
public void setCarrinhoCompras(List<Produto> carrinhoCompras) {
this.carrinhoCompras = carrinhoCompras;
}
public List<Produto> getCarrinhoComprasFinal() {
return carrinhoComprasFinal;
}
public void setCarrinhoComprasFinal(List<Produto> carrinhoComprasFinal) {
this.carrinhoComprasFinal = carrinhoComprasFinal;
}
}
Aqui esta o codigo jsp que exibe os produtos, e o botao comprar
<tr>
<s:iterator value="produtoList">
<td align="center">
<img src=<s:property value="imagem"/> width="132" height="119"><br>
<p><s:property value="descricao"/> </p>
<p class="preco">R$<s:property value="preco"/> </p>
<form method="post" action="addItem">
<input type="submit" value="Comprar" name="submit">
</form>
</td>
</s:iterator>
</tr>
<struts>
<include file="struts-default.xml" />
<package name="default" extends="struts-default">
<action name="index" >
<result>index2.jsp</result>
</action>
<action name="listProduto" method="list" class="br.ufu.facom.pi.trabalho.model.ProdutoAction" >
<result name="SUCCESS">cabo.jsp</result>
</action>
<action name="addItem" method="adicionaItem" class="br.ufu.facom.pi.trabalho.model.ProdutoAction">
<result name="SUCCESS" type="redirect">finalizarCompra</result>
</action>
<action name="finalizarCompra" method="mostraCarrinho" class="br.ufu.facom.pi.trabalho.model.ProdutoAction">
<result name="SUCCESS">finalizarPedido.jsp</result>
</action>
</package>
</struts>