Estou tentando deletar e alterar e volta null! [resolvido]

17 respostas
alvarofederal

Boa tarde, será que alguém conseguiria me ajudar num problema básico.

Estou tetando deletar e alterar dados de uma tabela pelo SQL Server, mas a aplicação retornar null.

Este é o erro:
message: description The server encountered an internal error () that prevented it from fulfilling this request.

exception:

java.lang.NumberFormatException: null

java.lang.Integer.parseInt(Integer.java:417)

java.lang.Integer.parseInt(Integer.java:499)

servlet.ServletExcluiContrato.doGet(ServletExcluiContrato.java:37)

javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Se puderem me ajudar, aguardo contato.
Acho que é simples, mas não consigo resolver.

17 Respostas

leoramos

Então, cara… posta teu código aqui, com query e tudo.
Mas o NumberFormatException já dá uma dica: pelo nome do teu Servlet, provavelmente tu tá passando o id (que é um número) no formato errado.
Posta aí que a gente mata a charada!

Joe_AM

Certeza que você está fazendo um Integer.parseInt(null) -> converter um valor para inteiro sem checar se este é nulo.

alvarofederal

Estou enviando meu código:

protected void doGet(HttpServletRequest request, 
		HttpServletResponse response) throws ServletException, IOException {
	
	Contratos contrato = new Contratos();
	contrato.setiCodigo(Integer.parseInt(request.getParameter("iCodigo")));
	
	ContratosDao ad = new ContratosDao();
	if (ad.excluir(contrato)>0){
		List<Contratos> lista = new ArrayList<Contratos>();
		lista = ad.listar();
		request.getSession(true).setAttribute("lista", lista);
		response.sendRedirect("listaContrato.jsp");
	}else{
		response.sendRedirect("erro.html");
	}
}

Espero que possam me ajudar.
Como faço pra informar que não é null.

drsmachado

Antes de sair por aí postando código confuso e sem formatação, leia http://guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

alvarofederal

Valeu!

Mas preciso mesmo de uma ajuda nesse código ai!

vou arruma-lo, e se puder me dar uma mão!!!

drsmachado

alvarofederal:
Valeu!

Mas preciso mesmo de uma ajuda nesse código ai!

vou arruma-lo, e se puder me dar uma mão!!!


Corrige conforme regras do fórum e depois vejo se posso ajudar.

alvarofederal

Quando dá erro, ele dá uma erro de excessão:

Aqui esta o erro:

GRAVE: Servlet.service() for servlet ServletExcluiContrato threw exception

java.lang.NullPointerException

at servlet.ServletExcluiContrato.doGet(ServletExcluiContrato.java:37)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

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.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.Http11Processor.process(Http11Processor.java:859)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Thread.java:662)

e aqui esta um pedaço do meu servlet:

Contratos contrato = new Contratos();		
 contrato.setiCodigo(Integer.parseInt(request.getParameter("iCodigo")));
				
 ContratosDao ad = new ContratosDao();		
      if (ad.excluir(contrato)>0){			
      List<Contratos> lista = new ArrayList<Contratos>();	
      lista = ad.listar();
      request.getSession(true).setAttribute("lista", lista);
      response.sendRedirect("listaContrato.jsp");
      }else{
		response.sendRedirect("erro.html");
      }
 }

O erro ocorre na linha 02.
Não sei o qeu esta havendo!!!

Joe_AM

alvarofederal:
Estou enviando meu código:

protected void doGet(HttpServletRequest request, 
		HttpServletResponse response) throws ServletException, IOException {
	
	Contratos contrato = new Contratos();
	contrato.setiCodigo(Integer.parseInt(request.getParameter("iCodigo")));
	
	ContratosDao ad = new ContratosDao();
	if (ad.excluir(contrato)>0){
		List<Contratos> lista = new ArrayList<Contratos>();
		lista = ad.listar();
		request.getSession(true).setAttribute("lista", lista);
		response.sendRedirect("listaContrato.jsp");
	}else{
		response.sendRedirect("erro.html");
	}
}

Espero que possam me ajudar.
Como faço pra informar que não é null.

alvarofederal, bom dia.

Como a educação não mandou lembrança para o outro prezado colega, te dou a dica:

para postar códigos, coloque-o entre as tags [.code.] e [.\code.] (sem os pontos).

Seu código ficará assim:

protected void doGet(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException, IOException {
		
		Contratos contrato = new Contratos();
		contrato.setiCodigo(Integer.parseInt(request.getParameter("iCodigo")));
		
		ContratosDao ad = new ContratosDao();
		if (ad.excluir(contrato)>0){
			List<Contratos> lista = new ArrayList<Contratos>();
			lista = ad.listar();
			request.getSession(true).setAttribute("lista", lista);
			response.sendRedirect("listaContrato.jsp");
		}else{
			response.sendRedirect("erro.html");
		}
	}

Para demais regras/dicas, olha o link que ele indicou…

Agora em relação ao seu erro, como havia escrito o comando contrato.setiCodigo(Integer.parseInt(request.getParameter(“iCodigo”))); está estourando o nullpointer pois o iCodigo vem nulo na requisição.

Dá uma olhada como está a tua jsp e se o nome dos componentes estão batendo certinho…

[]s

drsmachado

Bom, provável que o erro esteja aqui, como apontou o camarada “educadinho”

contrato.setiCodigo(Integer.parseInt(request.getParameter("iCodigo")));

Eu criaria uma variável, para receber request.getParameter("iCodigo"))
E então testaria se a variável está como null.
Ou simplesmente debugaria e verificaria se o nome do parâmetro é este mesmo, tanto no formulário (html ou jsp) quanto na servlet.

alvarofederal

Valeu também!!!
Mas como passo criar essa variável!
Se puder me ajudar mesmo, bati tanto a cabeça com isso, que nem raciocinando esotu mais.

drsmachado
String iCod = request.getParameter("iCodigo");
if(iCod == null){
  //faz alguma coisa
}
alvarofederal

Mudei, mas ele continua voltando null.

protected void doGet(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException, IOException {
		
		Contratos contrato = new Contratos();
		String iCodigo = request.getParameter("iCodigo"); 
		System.out.println(iCodigo);
		if(iCodigo == null){  
			response.sendRedirect("erro.html"); 
		}
		
		
		ContratosDao ad = new ContratosDao();
		if (ad.excluir(contrato)>0){
			List<Contratos> lista = new ArrayList<Contratos>();
			lista = ad.listar();
			request.getSession(true).setAttribute("lista", lista);
			response.sendRedirect("listaContrato.jsp");
		}else{
			response.sendRedirect("erro.html");
		}
	}

Esta mostrando o erro no linha 19 acima.
Aqui esta o erro:

null

29/06/2011 10:48:14 org.apache.catalina.core.StandardWrapperValve invoke

GRAVE: Servlet.service() for servlet ServletExcluiContrato threw exception

java.lang.IllegalStateException

at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)

at servlet.ServletExcluiContrato.doGet(ServletExcluiContrato.java:51)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

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.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.Http11Processor.process(Http11Processor.java:859)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Thread.java:662)

Nossa, esse erro esta acabando comigo.

drsmachado

Ta, mas o erro agora é outro. No primeiro era um nullpointer, agora é um IllegalStateException.

alvarofederal

Certo, só que pedi pra imprimir no console e ainda continua null!!!
Não acha eastranho, pode ser o mesmo null, certo?

drsmachado

Vamos tratar uma coisa de cada vez.
Se você recebe null é por um dos dois motivos ou não existe um elemento associado ao name=“iCodigo” no form que chama a servlet ou ele sequer existe.
Como você está chamado o get, teste chamando

endereco_da_servlet?iCodigo=teste

e veja se isto muda.

alvarofederal

Irmãozinho, [BINGO], quer dizer, [RESOLVIDO].
Adivinha só, estava me baseando num outro código aqui, e nem me atentei.
Você foi na mosca.
Parabens e valeu pela ajuda!!!

out.println("<TD><a href = 'ServletExcluiContrato?iCodigo="+contrato.getiCodigo()+
			"'><center>EXCLUIR</a></TD></TR>");
drsmachado

Se está resolvido, edita o tópico original e coloca [resolvido] no título

Criado 28 de junho de 2011
Ultima resposta 29 de jun. de 2011
Respostas 17
Participantes 4