@jairodione escreveu:
Olá Pessoal!
Estou fazendo um cadastro para lançamento em conta corrente (débito e crédito). O sistema não consegue pegar o índice da chave estrangeira "o código da conta".
Segue abaixo descrito as classes, arquivos e erros:
log do NetBeans:java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:454)
at java.lang.Integer.parseInt(Integer.java:527)
at org.apache.jsp.tag.web.listaContasSelect_tag.doTag(listaContasSelect_tag.java:86)
at org.apache.jsp.lancamento_jsp.jspxmeth_tagsJairo_005flistaContasSelect_005f0(lancamento_jsp.java:186)
at org.apache.jsp.lancamento_jsp.jspService(lancamentojsp.java:99)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:722)
- No browser:
HTTP Status 500 - type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: An exception occurred processing JSP page /lancamento.jsp at line 31
28: label for="lanconcred">Credito:
29: input type="text" name="lanconcred" id="lanconcred" required />
30: select name="selectConta" id="selectConta">
31: tagsJairo:listaContasSelect/>
32: select>
33: div>br>
34: div class="campos">Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
root cause javax.servlet.ServletException: javax.servlet.jsp.JspException: java.lang.NumberFormatException: null
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.lancamento_jsp.jspService(lancamentojsp.java:131)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
root cause java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:454)
java.lang.Integer.parseInt(Integer.java:527)
org.apache.jsp.tag.web.listaContasSelect_tag.doTag(listaContasSelect_tag.java:86)
org.apache.jsp.lancamento_jsp.jspxmeth_tagsJairo_005flistaContasSelect_005f0(lancamento_jsp.java:186)
org.apache.jsp.lancamento_jsp.jspService(lancamentojsp.java:99)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.Pagina JSP:
%@page import="br.com.jairo.modelo.Lancamentos"%> %@page import="java.util.Iterator"%> %@page import="java.util.List"%> %@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"> %@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> %@taglib tagdir="/WEB-INF/tags" prefix="tagsJairo" %> tagsJairo:verificaSessao/> c:import url="cabecalho.jsp"/> form id="formLancamento" method="post" action="LancamentoCRUD"> h1>Novo Lancamento/h1> div class="campos"> label for="lancodigo">Codigo:/label> input type="text" name="lancodigo" id="lancodigo" disabled /> </div><br> div class="campos"> label for="landata">Data:/label> input type="date" name="landata" id="landata" placeholder="dd/mm/aaaa" pattern="[0][9]{2}/[0][9]{2}/[0][9]{4}" onkeypress="formataMascara(this,'##/##/####'); return Numero(event);" size="10" maxlength="10" required value="${param.landata}" /> </div><br> div class="campos"> label for="lanconcred">Credito:/label> input type="text" name="lanconcred" id="lanconcred" required /> select name="selectConta" id="selectConta"> tagsJairo:listaContasSelect/> </select> </div><br> div class="campos"> label for="lancondeb">Debito:</label> input type="text" name="lancondeb" id="lancondeb" required value="${param.lancondeb}" /> </div><br> div class="campos"> label for="lanvalor">Valor:</label> input type="text" name="lanvalor" id="lanvalor" required value="${param.lanvalor}" /> </div><br> div class="campos"> label for="lanhistorico">Historico:</label> input type="text" name="lanhistorico" id="lanhistorico" required size="100" maxlength="100" value="${param.lanhistorico}" /> </div><br> input type="submit" name="acao" value="novo" /> </form> <c:import url="rodape.jsp"/>
JSTL:
<%@tag body-content="empty" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <jsp:useBean id="beanConta" class="br.com.jairo.dao.ContaDAO"></jsp:useBean> <c:set var="contador" value="${0}"></c:set> <% String selected = ""; java.util.List listaDeContas = (java.util.List) beanConta.getListaContaCombo(); for (java.util.Iterator iterator = listaDeContas.iterator(); iterator.hasNext();) { br.com.jairo.modelo.Contas contas = (br.com.jairo.modelo.Contas) iterator.next(); int conCodigo = contas.getConCodigo(); String conDescricao = contas.getConDescricao(); if(conCodigo == Integer.parseInt(request.getParameter("concodigo"))) selected = "selected"; else selected = ""; out.println("<option value="+conCodigo+" "+selected+">"+conDescricao+"</option>"); } %>
Servlet
package br.com.jairo.controle; import br.com.jairo.dao.LancamentoDAO; import br.com.jairo.modelo.Lancamentos; import java.io.IOException; import java.io.PrintWriter; import java.sql.SQLException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @author Jairo */ public class LancamentoCRUD extends HttpServlet { /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ParseException, SQLException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); RequestDispatcher rd = null; String lanCodigo = request.getParameter("lancodigo"); String lanData = request.getParameter("landata"); String lanConCred = request.getParameter("lanconcred"); String lanConDeb = request.getParameter("lancondeb"); String lanValor = request.getParameter("lanvalor"); String lanHistorico = request.getParameter("lanhistorico"); Lancamentos lancamentos = new Lancamentos(); if (lanCodigo != null) { lancamentos.setLanCodigo(Integer.parseInt(lanCodigo)); } DateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); if(lanData != null){ Date lanDataFormatada = formatoData.parse(lanData); lancamentos.setLanData(lanDataFormatada); } if(lanConCred != null){ lancamentos.setLanConCred(Integer.parseInt(lanConCred)); } if(lanConDeb != null){ lancamentos.setLanConDeb(Integer.parseInt(lanConDeb)); } if(lanValor != null){ lancamentos.setLanValor(Double.parseDouble(lanValor)); } lancamentos.setLanHistorico(lanHistorico); LancamentoDAO lancamentoDAO = new LancamentoDAO(); //Verificar qual é a ação String acao = request.getParameter("acao"); if (acao == null) { acao = "listarLancamento"; } if (acao.equals("alterar")) { //contaDAO.alteraConta(contas); //rd = request.getRequestDispatcher("/ContaCRUD?acao=listarConta"); } else if (acao.equals("excluir")) { //contaDAO.excluiConta(contas); //rd = request.getRequestDispatcher("/ContaCRUD?acao=listarConta"); } //else if (acao.equals("listarConta")) { //int numPagina = 1; //if (request.getParameter("numpagina") != null) { //numPagina = Integer.parseInt(request.getParameter("numpagina")); //} else if (acao.equals("novo")) { lancamentoDAO.novoLancamento(lancamentos); rd = request.getRequestDispatcher("/index.jsp"); } rd.forward(request, response); } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { processRequest(request, response); } catch (ParseException ex) { Logger.getLogger(LancamentoCRUD.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(LancamentoCRUD.class.getName()).log(Level.SEVERE, null, ex); } } /** * Handles the HTTP <code>POST</code> method. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { processRequest(request, response); } catch (ParseException ex) { Logger.getLogger(LancamentoCRUD.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(LancamentoCRUD.class.getName()).log(Level.SEVERE, null, ex); } } /** * Returns a short description of the servlet. * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> } - LancamentoDAO package br.com.jairo.dao; import br.com.jairo.fabrica.FabricaConexao; import br.com.jairo.modelo.Lancamentos; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Date; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Jairo */ public class LancamentoDAO { private Connection connection; public LancamentoDAO() { this.connection = new FabricaConexao().getConnection(); } //metodo para incluir lancamento public void novoLancamento(Lancamentos lancamentos) throws SQLException { String sql = "insert into lancamentos (landata, lanconcred, lancondeb,lanvalor,lanhistorico) values (?,?,?,?,?)"; PreparedStatement ps = null; try { ps = connection.prepareStatement(sql); ps.setDate(1, new java.sql.Date(lancamentos.getLanData().getTime())); ps.setInt(2, lancamentos.getLanConCred()); ps.setInt(3, lancamentos.getLanConDeb()); ps.setDouble(4, lancamentos.getLanValor()); ps.setString(5, lancamentos.getLanHistorico()); ps.execute(); } catch (SQLException ex) { Logger.getLogger(LancamentoDAO.class.getName()).log(Level.SEVERE, null, ex); } finally { connection.close(); ps.close(); } } } - ContaDAO package br.com.jairo.dao; import br.com.jairo.fabrica.FabricaConexao; import br.com.jairo.modelo.Contas; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Jairo */ public class ContaDAO { private Connection connection; public ContaDAO() { this.connection = new FabricaConexao().getConnection(); } //exibe contas cadastradas no sistema, paginado public List getListaContaPaginado(int pagina, String ordenacao, String pesquisa, String campopesquisa) throws SQLException { int limite = 5; String sql = ""; int offset = (pagina * limite) - limite; if (campopesquisa.equals("tipocodigo")) { if (pesquisa.equals("")) { sql = "select * from contas where " + campopesquisa + " > 0 order by " + ordenacao + " LIMIT 5 OFFSET " + offset; } else { sql = "select * from contas where " + campopesquisa + " = " + pesquisa + " order by " + ordenacao + " LIMIT 5 OFFSET " + offset; } } else { sql = "select * from contas where " + campopesquisa + " like '%" + pesquisa + "%' order by " + ordenacao + " LIMIT 5 OFFSET " + offset; } PreparedStatement ps = null; ResultSet rs = null; List<Contas> listaContas = new ArrayList<Contas>(); try { ps = connection.prepareStatement(sql); rs = ps.executeQuery(); while (rs.next()) { Contas contas = new Contas(); contas.setConCodigo(rs.getInt("conCodigo")); contas.setConDescricao(rs.getString("conDescricao")); contas.setTipoCodigo(rs.getInt("tipocodigo")); contas.setConSaldo(rs.getDouble("conSaldo")); listaContas.add(contas); } return listaContas; } catch (SQLException erro) { Logger.getLogger(ContaDAO.class.getName()).log(Level.SEVERE, null, erro); } finally { //connection.close(); //ps.close(); //rs.close(); } return null; } //metodo para excluir conta public boolean excluiConta(Contas contas) throws SQLException { String sql = "delete from contas where concodigo=?"; PreparedStatement ps = null; try { ps = connection.prepareStatement(sql); ps.setInt(1, contas.getConCodigo()); ps.execute(); return true; } catch (SQLException ex) { Logger.getLogger(ContaDAO.class.getName()).log(Level.SEVERE, null, ex); } finally { connection.close(); ps.close(); } return false; } //metodo para atualizar conta public void alteraConta(Contas contas) throws SQLException { String sql = "update contas set condescricao=?,tipocodigo=?,consaldo=? where concodigo=?"; PreparedStatement ps = null; try { ps = connection.prepareStatement(sql); ps.setString(1, contas.getConDescricao()); ps.setInt(2, contas.getTipoCodigo()); ps.setDouble(3, contas.getConSaldo()); ps.setInt(4, contas.getConCodigo()); ps.execute(); } catch (SQLException ex) { Logger.getLogger(ContaDAO.class.getName()).log(Level.SEVERE, null, ex); } finally { connection.close(); ps.close(); } } //metodo para incluir conta public void novaConta(Contas contas) throws SQLException { String sql = "insert into contas (condescricao,tipocodigo,consaldo) values (?,?,?)"; PreparedStatement ps = null; try { ps = connection.prepareStatement(sql); ps.setString(1, contas.getConDescricao()); ps.setInt(2, contas.getTipoCodigo()); ps.setDouble(3, contas.getConSaldo()); ps.execute(); } catch (SQLException ex) { Logger.getLogger(ContaDAO.class.getName()).log(Level.SEVERE, null, ex); } finally { connection.close(); ps.close(); } } //metodo para retornar o numero de registros na paginação public String totalRegistros(String pesquisa, String campopesquisa) throws SQLException { PreparedStatement psConta = null; ResultSet rsConta = null; String sqlConta = ""; try { if (campopesquisa.equals("concodigo")) { if (pesquisa.equals("")) { sqlConta = "select count(*) as contaRegistros from contas where " + campopesquisa + " > 0"; } else { sqlConta = "select count(*) as contaRegistros from contas where " + campopesquisa + " = " + pesquisa; } } else { sqlConta = "select count(*) as contaRegistros from contas where " + campopesquisa + " like '%" + pesquisa + "%'"; } psConta = connection.prepareStatement(sqlConta); rsConta = psConta.executeQuery(); rsConta.next(); String qtdTotalRegistros = rsConta.getString("contaRegistros"); return qtdTotalRegistros; } catch (SQLException ex) { Logger.getLogger(ContaDAO.class.getName()).log(Level.SEVERE, null, ex); } finally { connection.close(); psConta.close(); rsConta.close(); } return null; } //lista contas cadastradas no sistema public List getListaContaCombo() throws SQLException { String sql = "select * from contas order by condescricao"; PreparedStatement ps = null; ResultSet rs = null; List<Contas> listaContas = new ArrayList<Contas>(); try { ps = connection.prepareStatement(sql); rs = ps.executeQuery(); while (rs.next()) { Contas contas = new Contas(); contas.setConCodigo(rs.getInt("conCodigo")); contas.setConDescricao(rs.getString("ConDescricao")); listaContas.add(contas); } return listaContas; } catch (SQLException erro) { Logger.getLogger(ContaDAO.class.getName()).log(Level.SEVERE, null, erro); } finally { //connection.close(); //ps.close(); //rs.close(); } return null; } } - LancamentoModel /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package br.com.jairo.modelo; import java.util.Date; /** * * @author Jairo */ public class Lancamentos { private int lanCodigo; private Date lanData; private int lanConCred; private int lanConDeb; private double lanValor; private String lanHistorico; /** * @return the lanCodigo */ public int getLanCodigo() { return lanCodigo; } /** * @param lanCodigo the lanCodigo to set */ public void setLanCodigo(int lanCodigo) { this.lanCodigo = lanCodigo; } /** * @return the lanData */ public Date getLanData() { return lanData; } /** * @param lanData the lanData to set */ public void setLanData(Date lanData) { this.lanData = lanData; } /** * @return the lanConCred */ public int getLanConCred() { return lanConCred; } /** * @param lanConCred the lanConCred to set */ public void setLanConCred(int lanConCred) { this.lanConCred = lanConCred; } /** * @return the lanConDeb */ public int getLanConDeb() { return lanConDeb; } /** * @param lanConDeb the lanConDeb to set */ public void setLanConDeb(int lanConDeb) { this.lanConDeb = lanConDeb; } /** * @return the lanValor */ public double getLanValor() { return lanValor; } /** * @param lanValor the lanValor to set */ public void setLanValor(double lanValor) { this.lanValor = lanValor; } /** * @return the lanHistorico */ public String getLanHistorico() { return lanHistorico; } /** * @param lanHistorico the lanHistorico to set */ public void setLanHistorico(String lanHistorico) { this.lanHistorico = lanHistorico; } }
Obs.: Será se devo criar um DAO para lancamentos de débitos e outro para créditos, e criar um MODEL para contaCredito e outro para contaDébito?
Se sim então devo criar mais tabelas para cadastro de contas, ou seja uma tabela contacreito e outro contacréidto?
Mensagens: 1
Participantes: 1