Problema Desenvolvimento JSF

23 respostas
E

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

A

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

I

Fala edvilson,

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

J

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”?

F

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.

F

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

E
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

J
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.

I

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

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

H

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?

E

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.

J

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();
        }
E

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

troco la entraprodutoDAO né?

E

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

J

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!!!

E

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

I

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;
E

Caracas ja fiz não encontro o erro

F

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

E

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

F

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.

E

to Usando Glassfish , Mysql

F

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 ? ? ?

E

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