NullPointer no ArrayList

10 respostas
P

Boa tarde galera...
Estou tentando executar o index.jsp mas retorna o seguinte erro quando ele tenta carregar um ArrayList

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 59

56: 
57:       <div id="principal">
58:           <%
59:             for (int i = 0; i < listNoticia.size(); i++){
60:           %>
61:           <table align="center">
62:               <tr>


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:553)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)


root cause 

java.lang.NullPointerException
	org.apache.jsp.index_jsp._jspService(index_jsp.java:214)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	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/7.0.11 logs.

meu Index.jsp é assim:

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="controller.vo.Noticia,java.util.ArrayList,controller.ListarNoticia"%>

<%
ListarNoticia listar = new ListarNoticia();
listar.execute(request);
ArrayList<Noticia> listNoticia = new ArrayList<Noticia>();
listNoticia = (ArrayList<Noticia>) request.getAttribute("listNoticia");
%>

<html>
<head>
    

<link rel="stylesheet" type="text/css" href="estilo.css">
<title>GAS Insper</title>

</head>
<body>

<div id="principal">
          <%
            for (int i = 0; i < listNoticia.size(); i++){
          %>
          <table align="center">
              <tr>
                  <td>
                      <img src="<%=listNoticia.get(i).getImagem()%>"/>
                  </td>  
              </tr>
              <tr>
                  <td>
                      <p><%=listNoticia.get(i).getTitulo()%></p>
                  </td>  
              </tr>
              <tr>
                  <td>
                      <div id="noticia">
                          <%=listNoticia.get(i).getNoticia()%>
                      </div>
                  </td>  
              </tr>
              <tr>
                  <td>
                      <p><%=listNoticia.get(i).getAutor()%></p>
                  </td>  
              </tr>
              <tr>
                  <td>
                      <a href="/servlet?acao=Comentar?Id=<%=listNoticia.get(i).getId()%>">Comentar</a>
                  </td>  
              </tr>
          </table>
          <%
            } 
          %>
</div>

</body>
</html>

10 Respostas

Andre_Fonseca

oi

aparentemente o código abaixo está retornando nulo para o listaNoticias

(ArrayList&lt;Noticia&gt;) request.getAttribute("listNoticia");
P

Sim, é exatamente neste ponto que fica null…
Mas se eu criar um link pra executar via servlet, ele não retorna null…
O problema é que não é que eu não quero que seja clicado pra aprecer as noticias, eu quero que apareça automaticamente nesta página inicial. é este o problema :frowning:

P

UP
Ainda estou com esse problema, alguém pode me ajudar por favor?

lelodois

pqnoje:
Sim, é exatamente neste ponto que fica null…
Mas se eu criar um link pra executar via servlet, ele não retorna null…
O problema é que não é que eu não quero que seja clicado pra aprecer as noticias, eu quero que apareça automaticamente nesta página inicial. é este o problema :(

Explique o que você quer fazer, assim talvez conseguiremos te ajudar.

Abraços

P

Estou tentando acessar os dados de uma ArrayList pela página inicial.

tucano

ao inves de enviar a ArrayList nula, envia vazia que deve resolver.

ou ao menos quando retornar testa se ela é nula, se for joga uma lista vazia pra ela…

já tive problemas semelhantes…

P

não entendi muito bem, como vc fez exatamente?

tucano

<%

listNoticia = (ArrayList) request.getAttribute(“listNoticia”);

if(listNoticia == null){

listNoticia = new ListarNoticia();

}

%>

o meu cenário se direnciava pelos frameworks que tava no “meio campo” do meu sistema
tu vai estar recebendo a lista do request, até ai tudo normal como tu já tinha
depois tu vai testar se ela estiver nula. Estando nula (situação que queremos inibir) apenas instanciamos a lista.

qualquer coisa solta o grito rapaz!
até mais!
:wink:

P

Ahh
Entendi, eu uso essa mesma lógica em alguns casos…
o meu priblema tava em algum link. Exemplo; tenho o link <a href=“servletweb?acao=PaginaCadastro”

Ai nesse servletweb eu pedia pra recuperar essa String PaginaCadastro, mas tava PaginaCadastr (perceba que falta o ‘o’ no final desta palavra). Era isto que tava causando o erro, ai não tinha como eu ficar sabendo. Agora eu to mais esperto com essa classe servlet que é como se fosse um switch hehe… estou aprendendo java pra web ainda, percebi que o nullpointer é muito comum pra aplicação web, esse negocio de request e response me deixa louco.
Mas tá resolvido, só tem que tomar cuidado ao recuperar o request, ver se é do jeito que vc digitou na outra classe. Aprendendo com o próprio erro :wink:

Abraço cara. Muito obrigado

tucano

hehehe
bah esses empasses com nullpointer é pra deixar qualquer programador louco!
qualquer ratchadinha na digitação dos endereços… PÁH!! reclama (e com razao!)
hehehe

mas é bem nessa!
são com os erros que devemos aprender!!
(tanto com os erros da gente como os dos outros…)

esse servelt que tu tá usando é “feito no braço” ou é algum framework?

existem muitos frameworks que dão uma baita mão na roda nesse trabalho do “meio campo” entre a tela e o controle do sistema…

até mais!
:wink:

Criado 6 de maio de 2011
Ultima resposta 9 de mai. de 2011
Respostas 10
Participantes 4