[RESOLVIDO]erro: java.lang.NumberFormatException: null

Olá, estou fazendo um sistema web e estou com esse problema:

Jun 15, 2012 5:09:54 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [AgendaConsulta] in context with path [/OdontoEstetica] threw exception
java.lang.NumberFormatException: null
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at br.com.OdontoEstetica.jdbc.Servlet.ServletAgendaConsulta.service(ServletAgendaConsulta.java:58)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)[/code]

[b]Minha Servlet é essa:[/b]

[code]
package br.com.OdontoEstetica.jdbc.Servlet;

import java.io.IOException;

import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.OdontoEstetica.jdbc.DAO.ConsultasDAO;
import br.com.OdontoEstetica.jdbc.modelo.Consultas;

/**
 * @author Lilian
 * 
 */

/**
 * Servlet implementation class ServletAgendaConsulta
 */

@WebServlet("/ServletAgendaConsulta")
public class ServletAgendaConsulta extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = -1971147769581525008L;

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		super.doPost(request, response);
	}
	
	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

			
		PrintWriter out = response.getWriter();
	
		// pegando os parametros do request
		int codConsulta = Integer.parseInt(request.getParameter("codConsulta"));
		int codPaciente = Integer.parseInt(request.getParameter("codPaciente"));
		String nomePaciente = request.getParameter("nomePaciente");
		String rg = request.getParameter("rg");
		String cpf = request.getParameter("cpf");
		String dataNascimentoEmTexto = request.getParameter("dataNascimento");
		String endereco = request.getParameter("endereco");
		int telefone = Integer.parseInt(request.getParameter("telefone"));
		String nomeFuncionario = request.getParameter("nomeFuncionario");
		String servico = request.getParameter("servico");
		String dataHoraConsultaEmTexto = request
				.getParameter("dataHoraConsulta");
		Double valorConsulta = Double.parseDouble(request
				.getParameter("valorConsulta"));
		boolean status = Boolean.parseBoolean(request.getParameter("status"));
		Calendar dataNascimento = null;
		Calendar dataHoraConsulta = null;

		// conversão de data de nascimento do paciente
		try {
			Date datanasc = (Date) new SimpleDateFormat("dd/mm/yyyy")
					.parse(dataNascimentoEmTexto);
			dataNascimento = Calendar.getInstance();
			dataNascimento.setTime(datanasc);
		} catch (ParseException e) {
			out.println("Erro ao converter data");
			return;
		}
		// conversão de data de consulta
		try {
			Date dataHConsulta = (Date) new SimpleDateFormat("dd/mm/yyyy")
					.parse(dataHoraConsultaEmTexto);
			dataHoraConsulta = Calendar.getInstance();
			dataHoraConsulta.setTime(dataHConsulta);
		} catch (ParseException e) {
			out.println("Erro ao converter data");
		}

		// monta um objeto consultas
		Consultas consultas = new Consultas();
		consultas.setCodConsulta(codConsulta);
		consultas.setCodPaciente(codPaciente);
		consultas.setNomePaciente(nomePaciente);
		consultas.setRG(rg);
		consultas.setCPF(cpf);
		consultas.setDataNascimento(dataNascimento);
		consultas.setEnderecoPaciente(endereco);
		consultas.setTelefonePaciente(telefone);
		consultas.setNomeFuncionario(nomeFuncionario);
		consultas.setServico(servico);
		consultas.setDataHoraConsulta(dataHoraConsulta);
		consultas.setValorConsulta(valorConsulta);
		consultas.setStatus(status);

		// salva a consulta
		ConsultasDAO dao = new ConsultasDAO();
		dao.adiciona(consultas);

		RequestDispatcher rd = request.getRequestDispatcher("/Gravado.jsp");
		rd.forward(request, response);
	}

	

}


[/code]


[b]Meu web.xml:[/b]

[code]<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>OdontoEstetica</display-name>
  <welcome-file-list>
    <welcome-file>odonto_login.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Login</servlet-name>
    <servlet-class>br.com.OdontoEstetica.jdbc.Servlet.ServletLogin</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Login</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>AgendaConsulta</servlet-name>
    <servlet-class>br.com.OdontoEstetica.jdbc.Servlet.ServletAgendaConsulta</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>AgendaConsulta</servlet-name>
    <url-pattern>/agenda_consultas</url-pattern>
  </servlet-mapping>
</web-app>[/code]


[b]Minha página jsp:[/b]

[code]<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Agendamento de Consultas</title>
<link rel="stylesheet" href="styles.css" type="text/css">
<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
<script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
</head>

<body>

	<div id="container">

		<div id="container-inner">

			<div id="header">
				<h1>Odonto&Estética</h1>

				<div class="clear"></div>
			</div>
			<!-- end header -->



			<div id="banner">

				<div id="slogan">
					<p>
						Nossa Única <span class="slogan-big"><strong>Missão</strong></span><br>
						é mudar o seu <span class="slogan-big"><strong>Sorriso</strong></span>
						para melhor
					</p>
				</div>
				<!-- end slogan -->

				<div id="nav">
					<ul id="MenuBar1" class="MenuBarHorizontal">
                  <li><a href="odonto_menu.jsp" title="Home">Home</a>
                  </li>
                  <li><a href="#" class="MenuBarItemSubmenu">Cadastros</a>
                    <ul>
                      <li><a href="odonto_cdlogin.jsp">Cadastro de Usuários</a></li>
                      <li><a href="odonto_cdfunc.jsp">Cadastro de Funcionários</a></li>
                      <li><a href="odonto_cdforn.jsp">Cadastro de Fornecedores</a></li>
                      <li><a href="odonto_cdprod.jsp">Cadastro de Produtos</a></li>
                      <li><a href="odonto_cdpac.jsp">Cadastro de Pacientes</a></li>
                      <li><a href="odonto_agcon.jsp">Cadastro de Consultas</a></li>
                    </ul>
                  </li>
                  <li><a class="MenuBarItemSubmenu" href="#">Manutenção de Cadastros</a>
                    <ul>
                      <li><a href="odonto_mlogin.jsp">Manutenção de Usuários</a></li>
                      <li><a href="odonto_mfunc.jsp">Manutenção de Funcionários</a></li>
                      <li><a href="odonto_mforn.jsp">Manutenção de Fornecedores</a></li>
                      <li><a href="odonto_mprod.jsp">Manutenção de Produtos</a></li>
                      <li><a href="odonto_mpac.jsp">Manutenção de Pacientes</a></li>
                      <li><a href="odonto_mconsultas.jsp">Manutenção de Consultas</a></li>
                    </ul>
                  </li>
                  <li><a href="#" class="MenuBarItemSubmenu">Relatórios</a>
                    <ul>
                      <li><a href="javascript:abreJanela()">Relatório Histórico de Consultas</a></li>
                      <li><a href="javascript:abreJanela()">Relatório Contas a Pagar</a></li>
                      <li><a href="javascript:abreJanela()">Relatório Contas a Receber</a></li>
                    </ul>
                  </li>
                  <li><a href="Pesquisa.jsp">Pesquisa</a></li>
                </ul>
				</div>
				<!-- end nav -->

			</div>
			<!-- end banner -->


			<div id="main">
				<div id="content">
					<h2>Agendamento de Consultas</h2>
					<form action="agenda_consultas" method="post">

						<table>

							<tr>
								<td><label>Código da Consulta:</label></td>
								<td><input type="text" name="coConsulta" maxlength=10/></td>
							</tr>

							<tr>
								<td><label>Código do Paciente:</label></td>
								<td><input type="text" name="coPaciente" maxlength=10/></td>
							</tr>

							<tr>
								<td><label>Nome do Paciente:</label></td>
								<td><input type="text" name="nomePaciente" size="80"
									maxlength=50 /></td>
							</tr>

							<tr>
								<td><label>RG:</label></td>
								<td><input type="text" name="rg" maxlengt=9/></td>
							</tr>

							<tr>
								<td><label>CPF:</label></td>
								<td><input type="text" name="cpf" maxlength=11/></td>
							</tr>

							<tr>
								<td><label>Data de Nascimento:</label></td>
								<td><input type="text" name="dtNascimento" maxlength=10/></td>
							</tr>

							<tr>
								<td><label>Endereço:</label></td>
								<td><input type="text" name="endereco" size="80"
									maxlength=50 /></td>
							</tr>

							<tr>
								<td><label>Telefone:</label></td>
								<td><input type="text" name="telefone" maxlength=11/></td>
							</tr>

							<tr>
								<td><label>Nome do Dentista:</label></td>
								<td><input type="text" name="nomeFuncionario" size="80"
									maxlength=50 /></td>
							</tr>
							

						  <tr>
								<td><label>Data e Hora da Consulta:</label></td>
								<td><input type="text" name="dataHoraConsulta" /></td>
							</tr>

							<tr>
								<td><label>Serviço:</label></td>
								<td><select name="servicos" id="servicos">
										<option value="#" selected="selected">------</option>
										<option value="obturacao">Obturação</option>
										<option value="limpeza">Limpeza</option>
										<option value="extracao">Extração</option>
								</select></td>
							</tr>

							<tr>
								<td><label>Preço:</label></td>
								<td><input type="text" name="precoConsulta" /></td>
							</tr>

							<tr>
								<td><label>Status:</label></td>
								<td><input type="radio" name="status" id="radio_a"
									value="1" />Ativo <input type="radio" name="status"
									id="radio_i" value="0" />Inativo</td>
							</tr>

						</table>

						<table>

							<tr>
								<td><input type="submit" value="Cadastrar" /></td>
								<td><input type="reset" value="Limpar" /></td>
							</tr>

						</table>

					</form>
				</div>
				<!-- end content -->

				<div class="sidebar"></div>
				<!-- end sidebar -->

				<div class="clear"></div>

			</div>
			<!-- end main -->

		</div>
		<!-- end container-inner -->

	</div>
	<!-- end container -->

	<div id="footer">
		<p>©Copyright 2012</p>
	</div>
	<!-- end footer -->
<script type="text/javascript">
var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
    </script>
</body>
</html>

Alguém poderia me dizer porque acontece esse erro e como eu posso resolve-lo?

O valor do número não está chegando corretamente.

Basta ler a exception que ela te mostra a exata linha em que esse erro está acontecendo: at br.com.OdontoEstetica.jdbc.Servlet.ServletAgendaConsulta.service(ServletAgendaConsulta.java:58)

Analise por que o valor não está chegando corretamente. Pode ser algum id errado ou coisa parecida.

Não sei se estou certo, mas pelo o que eu tô vendo, na hora de você pegar o parâmetro “codConsulta”, ele não está conseguindo realizar a conversão pra int, porque ele está vindo como null, e o int não aceita esse tipo de dado…

Acho que é isso, rsrsrs…

[]'s

No inicio da sua table está

<input type="text" name="coConsulta" maxlength=10/>

e no servlet está

   int codConsulta = Integer.parseInt(request.getParameter("codConsulta")); 

faltou um “d”.

Ah, o SimpleDateFormat teria que ser (“dd/MM/yyyy”);

“mm” ele pega minutos, não meses.

e para finalizar o correto seria request.getAttribute e não getParameter :wink:

Corrigi os erros mas continua do mesmo jeito, esqueci de dizer que codConsulta está como alto_increment no meu banco

Verifique os outros campos. “CodPaciente” também está trocado, assim como “dataNascimento”.
O problema não está no banco, e sim nos parametros que você está tentando pegar no Servlet. Nele você tenta pegar com um nome, mas no JSP está declarando com um nome diferente.

[quote=ErickRAR]Verifique os outros campos. “CodPaciente” também está trocado, assim como “dataNascimento”.
O problema não está no banco, e sim nos parametros que você está tentando pegar no Servlet. Nele você tenta pegar com um nome, mas no JSP está declarando com um nome diferente.[/quote]

Arrumei os campos agora estão iguais na servlet e jsp.

Agora eu fiz assim :

int codPaciente = (Integer) request.getAttribute("codPaciente");

o erro agora é: java.lang.NullPointerException.

Eu preciso muito arrumar isso pois é meu TCC da faculdade.

:cry: :cry: