Problema Desenvolvimento JSF

23 respostas
edvilson

Bom dia amigos estou com problemas nesse formulario de cadastro esta listando tudo direito somente não esta inserindo os dados no Banco se alguem conseguir me ajudar agradeço

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!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=UTF-8">
        <title>Restaurante Paiol - Estoque</title>
    </head>
    <link rel="shortcut icon" href="paiol.ico" />
    <body background="fundo1.png">

        <div align="center">
            <h1>RESTAURANTE PAIOL</h1>
            <fieldset>
                <legend>Cadastro Estoque</legend>
        <f:view>
        <h:form>
            <p>Data Fabricação:&lt;h:inputText styleClass="campoTexto" id="dtFabric"
                                 value="#{entraProduto.cdto.dtFabric}"&gt;
                            &lt;f:convertDateTime type="date"
                                               pattern="dd/mm/yyyy" /&gt;&lt;/h:inputText&gt;dd/mm/aaaa</p>
            <p>Data Validade: &lt;h:inputText styleClass="campoTexto" id="dtVal"
                         value="#{entraProduto.cdto.dtVal}"&gt;
                            &lt;f:convertDateTime type="date"
                           pattern="dd/mm/yyyy" /&gt;&lt;/h:inputText&gt;dd/mm/aaaa</p>
            
            <p>Quantidade: &lt;h:inputText id="quantidade" value="#{entraProduto.cdto.quantidade}" size="6" required="true"/&gt;</p>

            <p>Freezer: &lt;h:selectOneMenu value="#{entraProduto.freezer}"&gt;
                    &lt;f:selectItems value= "#{freezerBean.todosFreezers}" var="conta" itemValue="#{conta.Nfreezer}" itemLabel="#{conta.Nfreezer}"/&gt;
                             &lt;/h:selectOneMenu&gt;
               Pratos: &lt;h:selectOneMenu value="#{entraProduto.prato}"&gt;
                   &lt;f:selectItems value="#{cadPratoBean.todosPratos}" var="conta" itemValue="#{conta.id}" itemLabel="#{conta.nome}"/&gt;
                &lt;/h:selectOneMenu&gt;</p>

            <p>&lt;h:commandButton action="#{entraProduto.acao}" value="Enviar" /&gt;</p>

        &lt;/h:form&gt;
        &lt;/f:view&gt;
            &lt;/fieldset&gt;
            &lt;/div&gt;

    &lt;/body&gt;
&lt;/html&gt;

23 Respostas

AlexandreTLazaro

Então pq vc não coloca o código do teu DAO???

Igor_Gabriel

Fala edvilson,

como está o método do “acao” no seu ManagedBean?

joede.fadel

Você colocou uma pagina jsf e perguntou sobre inserção no banco?
Qual sua duvida?
Você consegue executar o metodo que está no botão “entraProduto.acao”?

felipe.far

edvilson, você precisa postar seus back beans e testar o insert com um test unitário. Por exemplo, cria um método main e faz o insert do pojo. Está usando hibernate ? Se sim, mostre o mapeamento das classes.
Apenas com a view não tem como saber por que não está cadastrando.

fbahia32

coloca a sua classe DAO e o managed bean “entraProduto” para que possamos ajudá-lo, como os amigos pediram.

edvilson
EntraProdutoBean
package BEAN;

import DAO.EntrProdutoDAO;
import DTO.EntrProdutoDTO;
import DTO.FreezerDTO;
import DTO.cadPratoDTO;
import Facade.EntrProdutoFacade;
import java.io.Serializable;
import java.lang.reflect.Array;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Vector;
import javax.faces.model.SelectItem;


public class EntrProdutoBean implements Serializable{

    public EntrProdutoDTO cdto;
    public EntrProdutoDAO cdtoDAO;
    EntrProdutoFacade EntrProdutoFacade;
    FreezerDTO freezerDTO = new FreezerDTO();
    cadPratoDTO pratoDTO = new cadPratoDTO();
    SelectItem prato;
    SelectItem freezer;

    public SelectItem getFreezer() {
        return freezer;
    }

    public void setFreezer(SelectItem freezer) {
        this.freezer = freezer;
    }
    
    public EntrProdutoDTO getCdto() {
        return cdto;
    }

    public SelectItem getPrato() {
        return prato;
    }

    public void setPrato(SelectItem prato) {
        this.prato = prato;
    }

    public cadPratoDTO getPratoDTO() {
        return pratoDTO;
    }

    public void setPratoDTO(cadPratoDTO pratoDTO) {
        this.pratoDTO = pratoDTO;
    }

    public FreezerDTO getFreezerDTO() {
        return freezerDTO;
    }

    public void setFreezerDTO(FreezerDTO freezerDTO) {
        this.freezerDTO = freezerDTO;
    }

    public void setCdto(EntrProdutoDTO cdto) {
        this.cdto = cdto;
    }

    public EntrProdutoBean() {
        cdto = new EntrProdutoDTO();
        cdtoDAO = new EntrProdutoDAO();
        EntrProdutoFacade = new EntrProdutoFacade();

    }

    public void salvaEntrProduto() {
        EntrProdutoFacade.salvaEntrProduto(cdto);
    }

    public boolean buscaEntrProduto(int n) throws SQLException {
        cdto = EntrProdutoFacade.buscaEntrProduto(n);
        if ( cdto != null) {
            return true;
        } else {
            return false;
        }
    }

    public void excluiEntrProduto() throws SQLException  {
        EntrProdutoFacade.excluiEntrProduto(cdto);

    }

    public Vector MontaFreezer() throws SQLException {
        return EntrProdutoFacade.MontaFreezer();
    }

    public int MontaPilha(int idFInt) throws SQLException {
        return EntrProdutoFacade.MontaPilha(idFInt);
    }

    public int QtDisponivelPilha(int idFreezer, int idPilha) {
        return EntrProdutoFacade.QtDisponivelPilha(idFreezer, idPilha);
    }

    public List MontaPratos() {
        return EntrProdutoFacade.MontaPratos();
    }
    public String acao(){
        cdto.setIdPrato(cdto.getIdPrato());
        cdto.setnFreezer(cdto.getnFreezer());
        cdtoDAO.salvaEntrProduto(cdto);
        return "ok";
    }
    
}
EntraProdutoDAO
package DAO;

import DTO.EntrProdutoDTO;
import DTO.cadPratoDTO;
import java.sql.Array;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import javax.swing.JOptionPane;


public class EntrProdutoDAO {

    String url;
    Connection conn;
    Statement stmt;
    ResultSet rs;

    public EntrProdutoDAO() {
        //url = "jdbc:mysql://" + host + "/" + bd;
        url = "jdbc:mysql://localhost/restaurante";

        try {
            Class.forName("com.mysql.jdbc.Driver"); //MYSQL

            conn = DriverManager.getConnection(url, "root", "");
            stmt = conn.createStatement();
        } catch (SQLException e) {
            System.out.println("Error 1: " + e);
        } catch (ClassNotFoundException e) {
            System.out.println("Error 2: " + e);
        }
    }

    public void salvaEntrProduto(EntrProdutoDTO cDTO)    {
        try {
            String query = "INSERT INTO estoque (numeroFreezer, idPrato, Quantidade, dtFabric, DtValidade) VALUES ('" +
                            cDTO.getnFreezer() + "','" +
                            cDTO.getIdPrato() + "','" +
                            cDTO.getQuantidade() + "','" +
                            cDTO.getDtFabric() + "','" +
                            cDTO.getDtVal() +
                            "')";

            stmt.executeUpdate(query);
        } catch (SQLException e) {
            System.out.println("ERROR: " + e);
        }
    }


    public void excuiEntrProduto(int cod) throws SQLException
    {
    String query = "DELETE * FROM estoque WHERE idPrato = '"+ cod + "'";
    stmt.executeUpdate(query);

    }


    public List&lt;EntrProdutoDTO&gt; getTodosEntrProdutos() {
        List l = new ArrayList();
        EntrProdutoDTO cDTO = new EntrProdutoDTO();
        try {
            String query = "SELECT * FROM estoque";
            rs = stmt.executeQuery(query);
            while (rs.next()) {
                cDTO.setnFreezer(rs.getInt("numeroFreezer"));
                cDTO.setIdPrato(rs.getInt("idPrato"));
                cDTO.setQuantidade(rs.getInt("quantidade"));
                cDTO.setDtFabric(rs.getString("dtFabric"));
                cDTO.setDtVal(rs.getString("dtValidade"));
                l.add(cDTO);
            }



        } catch (SQLException e) {
            System.out.println("ERROR: " + e);
        }
        return l;
    }

    public EntrProdutoDTO buscaPorNumero(int n) throws SQLException {
        EntrProdutoDTO cDTO = new EntrProdutoDTO();
        String query = "SELECT * FROM EntrProduto WHERE  numero = '" + n + "'";
        rs = stmt.executeQuery(query);
        rs.next();

        if (rs != null) {
        try{
            cDTO.setnFreezer(rs.getInt("numeroFreezer"));
            cDTO.setIdPrato(rs.getInt("idPrato"));
            cDTO.setQuantidade(rs.getInt("quantidade"));
            cDTO.setDtFabric(rs.getString("dtFabric"));
            cDTO.setDtVal(rs.getString("dtValidade"));
        }catch(SQLException e){
           JOptionPane.showMessageDialog(null, "NOme nao encontrado");
        }
            return cDTO;
        }
        else
        {
          return null;
        }



    }

    public Vector MontaFreezer()  throws SQLException {
        Vector combo = new Vector();
       try{
          ResultSet rs;
          String query = "SELECT numero FROM freezer";
          rs = stmt.executeQuery(query);
          while (rs.next()){           
               int n = rs.getInt("numero");
               combo.add(n);
          }
       }
       catch(SQLException e){
          System.out.println("Erro ao listar Freezers." + e.getMessage());
       }
       return combo;
    }

  public int MontaPilha(int n)  throws SQLException {
       int combo = 0;
       try{
          ResultSet rs;
          String query = "SELECT numero, Qtpilhas FROM freezer WHERE numero = " + n;
          rs = stmt.executeQuery(query);
          while (rs.next()){
               combo = rs.getInt("Qtpilhas");
          }
       }
       catch(SQLException e){
          System.out.println("Erro ao listar Pilhas." + e.getMessage());
       }
       return combo;
    }

  public int QtDisponivelPilha(int nfreezer, int nPilha){
       int qtdReg = 0;
       int quantidade = 0;
       try{
          ResultSet rs;
          String query = "SELECT numeroFreezer quantidade FROM estoque WHERE numeroFreezer = " + nfreezer + " and idPilha = " + nPilha;
          rs = stmt.executeQuery(query);
          while (rs.next()){
               quantidade = quantidade + rs.getInt("quantidade");
               qtdReg++;
          }
       }
       catch(SQLException e){
          System.out.println("Erro ao listar cargos." + e.getMessage());
       }
        return 10 - quantidade;
  }


  public List&lt;cadPratoDTO&gt; MontaPratos(){
       int qtdReg = 0;
       int quantidade = 0;
       List Lpratos = new ArrayList();

       cadPratoDTO cDTO = new cadPratoDTO();
       try{
          ResultSet rs;
          String query = "SELECT id, nome, descricao, preco FROM cadprato";
          rs = stmt.executeQuery(query);

           while (rs.next()) {
                cDTO.setId(rs.getInt("id"));
                cDTO.setNome(rs.getString("nome"));
                cDTO.setNome(rs.getString("descricao"));
                cDTO.setPreco(rs.getDouble("preco"));
                Lpratos.add(new cadPratoDTO(rs.getInt("id"), rs.getString("nome"), rs.getString("descricao"), rs.getDouble("preco")));
            }

       }
       catch(SQLException e){
          System.out.println("Erro ao listar cargos." + e.getMessage());
       }

        return Lpratos;
  }

   
    public void fechaConexao() {
        try {
            stmt.close();
            conn.close();
        } catch (SQLException e) {
        }
    }
}

Ele tao executando o entraProduto.acao

joede.fadel
public String acao(){
        cdto.setIdPrato(cdto.getIdPrato()); //codigo redundate tire essa linha
        cdto.setnFreezer(cdto.getnFreezer()); //codigo redundate tire essa linha
        cdtoDAO.salvaEntrProduto(cdto);
        return "ok";
    }
    
}


//EntraProdutoDAO


    public void salvaEntrProduto(EntrProdutoDTO cDTO)    {
        try {
            //passe o id do estoque na sua sql
            String query = "INSERT INTO estoque (ID,numeroFreezer, idPrato, Quantidade, dtFabric, DtValidade) VALUES (null, " +
                            cDTO.getnFreezer() + "','" +
                            cDTO.getIdPrato() + "','" +
                            cDTO.getQuantidade() + "','" +
                            cDTO.getDtFabric() + "','" +
                            cDTO.getDtVal() +
                            "')";

            stmt.executeUpdate(query);
        } catch (SQLException e) {
            System.out.println("ERROR: " + e);
        }
    }

Uma dica para ficar mais melhor o seu código utilize PrepareStatement ao invés de Statement.

Igor_Gabriel

Não vi nada de errado, só acho que não precisa disso:

Mas isso não influenciaria em nada, ta dando algum erro?

Hebert_Coelho

Igor Gabriel:
Não vi nada de errado, só acho que não precisa disso:

Mas isso não influenciaria em nada, ta dando algum erro?

A mesma pergunta que eu estava indo fazer.

Tem algum erro?

edvilson

Não insere no banco e GlassFish retorna isso:

INFO: Loading application RestaurantePaiol at /RestaurantePaiol INFO: RestaurantePaiol was successfully deployed in 1.587 milliseconds. INFO: Inicializando Mojarra 2.0.2 (FCS b10) para o contexto '/RestaurantePaiol' INFO: Monitoring jndi:/server/RestaurantePaiol/WEB-INF/faces-config.xml for modifications INFO: Loading application RestaurantePaiol at /RestaurantePaiol INFO: RestaurantePaiol was successfully deployed in 664 milliseconds. INFO: Inicializando Mojarra 2.0.2 (FCS b10) para o contexto '/RestaurantePaiol' INFO: Monitoring jndi:/server/RestaurantePaiol/WEB-INF/faces-config.xml for modifications INFO: Loading application RestaurantePaiol at /RestaurantePaiol INFO: RestaurantePaiol was successfully deployed in 16.639 milliseconds. INFO: Inicializando Mojarra 2.0.2 (FCS b10) para o contexto '/RestaurantePaiol' INFO: Monitoring jndi:/server/RestaurantePaiol/WEB-INF/faces-config.xml for modifications INFO: Loading application RestaurantePaiol at /RestaurantePaiol INFO: RestaurantePaiol was successfully deployed in 1.310 milliseconds.

joede.fadel

edvilson:
Não insere no banco e GlassFish retorna isso:

INFO: Loading application RestaurantePaiol at /RestaurantePaiol INFO: RestaurantePaiol was successfully deployed in 1.587 milliseconds. INFO: Inicializando Mojarra 2.0.2 (FCS b10) para o contexto '/RestaurantePaiol' INFO: Monitoring jndi:/server/RestaurantePaiol/WEB-INF/faces-config.xml for modifications INFO: Loading application RestaurantePaiol at /RestaurantePaiol INFO: RestaurantePaiol was successfully deployed in 664 milliseconds. INFO: Inicializando Mojarra 2.0.2 (FCS b10) para o contexto '/RestaurantePaiol' INFO: Monitoring jndi:/server/RestaurantePaiol/WEB-INF/faces-config.xml for modifications INFO: Loading application RestaurantePaiol at /RestaurantePaiol INFO: RestaurantePaiol was successfully deployed in 16.639 milliseconds. INFO: Inicializando Mojarra 2.0.2 (FCS b10) para o contexto '/RestaurantePaiol' INFO: Monitoring jndi:/server/RestaurantePaiol/WEB-INF/faces-config.xml for modifications INFO: Loading application RestaurantePaiol at /RestaurantePaiol INFO: RestaurantePaiol was successfully deployed in 1.310 milliseconds.

Esse log não tem nada a ver com o seu erro, é o deploy de sua aplicação no servidor

troque 
catch (SQLException e) {  
            System.out.println("ERROR: " + e);  
        }  
por
     catch (SQLException e) {  
         e.printStackTrace();
        }
edvilson

troque catch (SQLException e) { System.out.println("ERROR: " + e); } por catch (SQLException e) { e.printStackTrace(); }

troco la entraprodutoDAO né?

edvilson

Mas não é por isso que ta dando erro não sei poq não insere no banco ja pensei analisei e não encontro o erro

joede.fadel

edvilson:
troque catch (SQLException e) { System.out.println("ERROR: " + e); } por catch (SQLException e) { e.printStackTrace(); }

troco la entraprodutoDAO né?

Eu fiz isso para mostrar no console o erro que está ocorrendo na sua aplicação e não para corrigir!!!

edvilson

A sim entendo se tu quiseres te mando o projeto com sql pra veres não sei poq nao insere no banco

Igor_Gabriel

Tu já deu uma debugada no método “salvaEntrProduto” ?

  • vê se o objeto no parâmetro do método está chegando nulo ou não;
  • vê se está passando pelo “stmt.executeUpdate(query);”
  • testa a query no SGBD pra ver se não tem nada mal estruturado no seu banco;
edvilson

Caracas ja fiz não encontro o erro

fbahia32

edvilson, vc ja tentou “debugar” pra ver o q ta acontecendo?
só assim vc realmente irá descobrir o erro.

edvilson

Executei o debug e não achei o erro não sei que fazer

fbahia32

Qual é o seu servidor de aplicação(Jboss, tomcat…), SGBD(mysql,postgres…) ?

vc ta usando o hibernate? se tiver verifique o persistence.xml, se ta mapeado certinho.

Pelo visto falta algum configuração.

edvilson

to Usando Glassfish , Mysql

fbahia32

fbahia32:

vc ta usando o hibernate? se tiver verifique o persistence.xml, se ta mapeado certinho.

Pelo visto falta algum configuração.

Mas sobre o persistence.xml vc verificou se ta aparentemente ok em relacao ao drive do mysql ? ? ?

edvilson

ta Aparecendo tudo certo só nao sei poq nao ta gravando

Criado 18 de novembro de 2011
Ultima resposta 18 de nov. de 2011
Respostas 23
Participantes 7