NullPointException ao tentar exibir conteúdo de um bean em uma página jsp

2 respostas
M

Pessoal,

No meu estudo de JSF, tenho um exemlo, contendo uma classe java “PessoaBean”, uma página “página.jsp”, um bean jsf configurado no “faces.config”.
Segue, abaixo, o código de cada um destes “artefatos”.
Código do arquivo “web.xml”

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>
	aula2</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup> 1 </load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>
</web-app>

Código do arquivo “faces-config.xml”

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer
Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
<managed-bean>
	<managed-bean-name>Pessoa</managed-bean-name>
	<managed-bean-class>beans.PessoaBean</managed-bean-class>
	<managed-bean-escope>session</managed-bean-escope>
	<managed-property>
		<property-name>Nome</property-name>
		<value>Max William</value>
	</managed-property>
	<managed-property>
		<property-name>Idade</property-name>
		<value>0</value>
	</managed-property>
	<managed-property>
		<property-name>generosMusicais</property-name>
		<list-entries>
			<value>Rock</value>
			<value>Reggae</value>
			<value>Pop</value>
		</list-entries>
	</managed-property>
</managed-bean>
<navigation-rule>
	<from-view-id>/pagina.jsp</from-view-id>
</navigation-rule>	
</faces-config>

Código da classe PessoaBean

package beans;
import java.util.ArrayList;

public class PessoaBean {
	
	String nome;
	String idade;
	ArrayList<String> generosMusicais;
	
	PessoaBean() { 
		
	}
	
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public String getIdade() {
		return idade;
	}
	
	public void setIdade(String idade) {
		this.idade = idade;
	}
	
	public ArrayList<String> getGenerosMusicais() {
		return generosMusicais;
	}
	
	public void setGenerosMusicais(ArrayList<String> generosMusicais) {
		this.generosMusicais = generosMusicais;
	}
	
}

Código do arquivo “página.jsp”

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Dados do Bean Pessoa</title>
</head>
<body>
	<f:view>
		<h:outputText>Dados do Bean Pessoa</h:outputText>
		<br />
		<h:outputText value="Nome #{Pessoa.userName}"></h:outputText>
		<br />
		<h:outputText>Idade</h:outputText>
		<h:outputText value="Idade : #{Pessoa.Idade}"></h:outputText>
		<br/>
		<h:outputText>Gêneros Musicais</h:outputText>
		<h:outputText value="Gêneros Musicais"></h:outputText>
		<br />
        <h:outputText value="1o gênero musical #{Pessoa.generosMusicais[0]}"></h:outputText>
		<br />
		<h:outputText value="2o gênero musical #{Pessoa.generosMusicais[1]}"></h:outputText>
		<br />
		<h:outputText value="3o gênero musical #{Pessoa.generosMusicais[2]}"></h:outputText>
	</f:view>
</body>
</html>

Quando tento executar o arquivo “pagina.jsp” acima, para exibir os dados do bean, aparece a seguite mensagem de erro :

HTTP Status 500 - 
--------------------------------------------------------------------------------
type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 

javax.servlet.ServletException
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)

root cause 

java.lang.NullPointerException
	com.sun.faces.mgbean.BeanManager.isBeanInScope(BeanManager.java:171)
	com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:83)
	javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
	com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:61)
	org.apache.el.parser.AstValue.getValue(AstValue.java:107)
	org.apache.el.parser.AstDeferredExpression.getValue(AstDeferredExpression.java:42)
	org.apache.el.parser.AstCompositeExpression.getValue(AstCompositeExpression.java:47)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
	javax.faces.component.UIOutput.getValue(UIOutput.java:184)
	com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201)
	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:284)
	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:946)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:942)
	com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:271)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:202)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.

E o console do Eclipse exibe o seguinte :

INFO: Server startup in 1265 ms
03/08/2009 16:15:30 com.sun.faces.lifecycle.Phase doPhase
SEVERE: JSF1054: (Phase ID: RENDER_RESPONSE 6, View ID: /pagina.jsp) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@118223d]
03/08/2009 16:15:30 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
	at com.sun.faces.mgbean.BeanManager.isBeanInScope(BeanManager.java:171)
	at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:83)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:61)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:107)
	at org.apache.el.parser.AstDeferredExpression.getValue(AstDeferredExpression.java:42)
	at org.apache.el.parser.AstCompositeExpression.getValue(AstCompositeExpression.java:47)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
	at javax.faces.component.UIOutput.getValue(UIOutput.java:184)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:284)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:946)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:942)
	at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:271)
	at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:202)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	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:128)
	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:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Thread.java:619)

Alguém poderia me ajudar a descobrir o que está acontecendo ?

Agradece,
Max Carvalho

2 Respostas

deadlock

<h:outputText value="Nome #{Pessoa.userName}"></h:outputText>

“userName” na página, “nome” no bean??

M

deadlock,

Já corrigi o erro. Deu certo aqui.
Obrigado pela resposta.

Criado 3 de agosto de 2009
Ultima resposta 6 de ago. de 2009
Respostas 2
Participantes 2