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

7 respostas
L

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)

Minha Servlet é essa:

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

	

}

Meu web.xml:

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

Minha página jsp:

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

7 Respostas

H

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.

S

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

E

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.

T

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

L

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

E

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.

L

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.

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:

Criado 15 de junho de 2012
Ultima resposta 15 de jun. de 2012
Respostas 7
Participantes 5