NullPointerException

17 respostas
W

Após clicar em executar no meu NETBEANS deverá aparecer um página HTML para entrada dos dados para comunicar com meu BEAN da minha aplicação, mas acontece que ao executar usando o NETBEANS da a seguinte mensagem “nullPointerException”,
realmente não entendi pois deveria apenas apresentar uma página para entrada de dados. Alguém pode me ajudar?

1 <%-- 
 2     Document   : AgendaContato
 3     Created on : 20/05/2011, 13:57:41
 4     Author     : welder
 5 --%>
 6 
 7 <%@page contentType="text/html" pageEncoding="UTF-8"%>
 8 
 9 <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
10 <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
11 <!DOCTYPE html>
12 
13 <html>
14    <f:view>
15         <head>
16            <title>Agenda de Contatos</title>
17         </head>
18         <body>
19             
20             <h:form>
21                 
22                 <h:outputText value="Nome: "/>
23                 <h:inputText value="#{agendaContatoBean.contato.nome}"/>
24                                 
25                 <br/>
26                 
27                 <h:outputText value="Endereço: "/>
28                 <h:inputText value="#{agendaContatoBean.contato.endereco}"/>
29                 
30                 <br/>
31                 
32                 <h:outputText value="Sexo: "/>
33                 <h:inputText value="#{agendaContatoBean.contato.sexo}"/>
34                 
35                 <b/>
36                 
37                 <h:commandButton actionListener="#{agendaContatoBean.incluirContato}" value="incluir" />                
38                 <br/><br/>
39                 
40                 <h:dataTable var="obj" value="#{agendaContatoBean.contatos}" border="1" width="100%">
41                     <h:column>
42                         <f:facet name="header">
43                             <h:outputText value="Nome"/>
44                         </f:facet>                        
45                         <h:outputText value="#{obj.nome}"/>                        
46                     </h:column>
47                     
48                     <h:column>
49                         
50                         <f:facet name="header">
51                             <h:outputText value="Endereço"/>
52                         </f:facet>
53                         <h:outputText value="#{obj.endereco}"/>                                                                
54                             
55                     </h:column>
56                     
57                     <h:column>
58                         <f:facet name="header">
59                             <h:outputText value="Sexo"/>                                          
60                         </f:facet>
61                         <h:outputText value="#{obj.sexo}"/>
62                         
63                     </h:column>
64                                             
65                 </h:dataTable>
66                
67             </h:form>
68                       
69         </body>
70    </f:view>
71 </html>

17 Respostas

Rodrigo_Sasaki

tem como você colar o stacktrace aí pra gente analisar o erro?

drsmachado

Qual o stackTrace?
Onde está o erro?

A

O construtor de agendaContatoBean está private?

Você criou o get e o set de contato em agendaContatoBean?

Pode postar o seu stack trace e Managed Bean?

W

STACK TRACE…

An Error Occurred:
java.lang.NullPointerException

  • Stack Trace
java.lang.NullPointerException

at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:796)

at com.sun.faces.mgbean.BeanManager$ScopeManager.getScopeHandler(BeanManager.java:484)

at com.sun.faces.mgbean.BeanManager$ScopeManager.getFromScope(BeanManager.java:476)

at com.sun.faces.mgbean.BeanManager.getBeanFromScope(BeanManager.java:240)

at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:242)

at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)

at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)

at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)

at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71)

at org.apache.el.parser.AstValue.getValue(AstValue.java:147)

at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)

at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:106)

at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:193)

at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:181)

at javax.faces.component.UIOutput.getValue(UIOutput.java:169)

at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)

at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)

at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)

at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:883)

at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1659)

at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)

at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:853)

at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1652)

at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)

at com.sun.faces.application.view.JspViewHandlingStrategy.doRenderView(JspViewHandlingStrategy.java:431)

at com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:233)

at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)

at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:394)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)

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

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

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)

at java.lang.Thread.run(Thread.java:636)
MichelSante

Posta o seu metodo agendaContatoBean.incluirContato

Rodrigo_Sasaki

poste o bean todo :wink:

W

Os GETTERS E SETTERS estão criados e o construtor é público.

Mas ao executar o AgendaContato.jsp deveria apenas exibir um pagina em HTML para entrada dos dados?
Mas ao executar o AgendaContato.jsp está dando o erro de nullPointerException…

A

Dá erro ao carregar? Ou dá erro quando clica em Incluir na tela?

W

Class Contato

package dominio;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

/**
 *
 * @author welder
 */
@ManagedBean
@RequestScoped
public class Contato {
    private String nome;
    private String endereco;
    private String sexo;
    
      /** Creates a new instance of Contato */
    public Contato() {
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }
  
}

-----------------------------------------------------------------------------------------------------------


Class AgendaContatoBean


package visao;

import dominio.Contato;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
 *
 * @author welder
 */
@ManagedBean
@SessionScoped
public class AgendaContatoBean {
    private List<Contato> contatos;
    private Contato contato;

    /** Creates a new instance of AgendaContatoBean */
    public AgendaContatoBean() {
        this.setContatos(new ArrayList<Contato>());
        this.setContato(new Contato());        
        
    }
    
    public void incluirContato(ActionEvent event){
        this.getContatos().add(this.getContato());
        this.setContato(new Contato ());
        
    }
    
      public List<Contato> getContatos(){
        return contatos;
    }
    
    public void setContatos(List<Contato> contatos){
        this.contatos = contatos;
    }
    
    public Contato getContato(){
        return contato;
    }
    
    public void setContato(Contato contato){
        this.contato = contato;
    }    
    
}
W

O ERRO acontece ao executar o projeto, ou seja ao executar o AgendaContato.jsp…
Realmente não sei o motivo do erro, alguém pode me ajudar?

A
<blockquote>public void incluirContato(ActionEvent event){

this.getContatos().add(this.getContato());

this.setContato(new Contato ());
}   </blockquote>

Você pode explicar qual a idéia desta linha?

A
<blockquote><h:dataTable var=“obj” value="#{agendaContatoBean.contatos}" border=“1” width=“100%”>

41                     <h:column>

42                         <f:facet name=“header”>

43                             <h:outputText value=“Nome”/>

44                         </f:facet>

45                         <h:outputText value="#{obj.nome}"/>

46                     </h:column>

47

48                     <h:column>

49

50                         <f:facet name=“header”>

51                             <h:outputText value=“Endereço”/>

52                         </f:facet>

53                         <h:outputText value="#{obj.endereco}"/>

54

55                     </h:column>

56

57                     <h:column>

58                         <f:facet name=“header”>

59                             <h:outputText value=“Sexo”/>

60                         </f:facet>

61                         <h:outputText value="#{obj.sexo}"/>

62

63                     </h:column>

64

65                 </h:dataTable>   </blockquote>

Tenta fazer assim:

Ex:

<h:column> 42 <f:facet name="header"> 43 <h:outputText value="Nome"/> 44 </f:facet> 45 <h:outputText value="#{obj.contato.nome}"/> 46 </h:column> 47 48 <h:column> 49 50 <f:facet name="header"> 51 <h:outputText value="Endereço"/> 52 </f:facet> 53 <h:outputText value="#{obj.contato.endereco}"/> 54 55 </h:column> 56 57 <h:column> 58 <f:facet name="header"> 59 <h:outputText value="Sexo"/> 60 </f:facet> 61 <h:outputText value="#{obj.contato.sexo}"/> 62 63 </h:column>

A

Solucionado?

W
<blockquote><div class="quote-author">andredecotia:</div><blockquote>public void incluirContato(ActionEvent event){

this.getContatos().add(this.getContato());

this.setContato(new Contato ());
}   </blockquote>

Você pode explicar qual a idéia desta linha?

Posso explicar: veja só.

1 - Ao submeter a página clicando no botão - <h:commandButton actionListener="#{agendaContatoBean.incluirContato}" value=“incluir” /> desse componente serei direcionado ao BEAN da minha aplicação mais especifico no construtor
2 - Dentro do construtor tenho dois métodos setters um que instancia um objeto ArrayList e contatos que é do tipo List faz referencia a esse objeto.
3 - Após criar uma COLLECTION o outro SETTER instancia um objeto do Contato já com os valores dos atributos e adiciono na lista.
4 - O meu problema é que não estou conseguindo executar a minha página HTML renderizada pelo Jsf.

W

Olá André, na verdade não vi nenhum solução apresentada em código especifico.
Acho que meu problema está relaconado com xml ou faces-confing, não tenho certeza?

A

Por que você acha que possa ser algo de xml?

W

Realmente não sei o que está acontecendo, alguém pode me ajudar?

Criado 25 de maio de 2011
Ultima resposta 26 de mai. de 2011
Respostas 17
Participantes 5