NullPointerExeption ao renderizar página

4 respostas
G

Boa noite a todos, parece uma dúvida um pouco "infantil" porém não estou conseguindo detectar o local deste nullpointer. Tenho a seguinte situação: criei uma página xhtml com o formulário ainda simples para cadastro de cotação e, ao fazer a chamada do menu, ele não renderiza a página e lança uma mensagem de nullpointer no console. Alguém consegue me ajudar a encontrar problema? Desde já agradeço a todos e segue os códigos.

Cotacao.java
@Entity
@Table(name = "cotacao")
public class Cotacao {
	
	@Id
	@Column(name="idCotacao")
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Integer idCotacao;
	
	@ManyToOne
	@JoinColumn(name="idCliente")
	private Cliente cliente;
	
	@ManyToMany(fetch=FetchType.LAZY)
	@JoinTable(name="cotacao_fornecedor", schema="gpa", 
			joinColumns=@JoinColumn(name="idCotacao"),
			inverseJoinColumns=@JoinColumn(name="idFornecedor")		
	)
	private List<Fornecedor> fornecedores;
	
	@Column(name="data_cot")
	private Date dtCotacao;
	
	@Column(name="produto")
	private String produto1;
	
	@Column(name="produto2")
	private String produto2;
	
	@Column(name="quantidade")
	private Integer quantidade1;
	
	@Column(name="quantidade2")
	private Integer quantidade2;
	
	@Column(name="total_pedido")
	private Float totalPedido;
	
	@Column(name="total_pedido2")
	private Float totalPedido2;
	
	@Column(name="valor_frete")
	private Float valorFrete;
	
	@Column(name="valor_frete2")
	private Float valorFrete2;
	
	@Column(name="valor_produto")
	private Float valorProduto1;
	
	@Column(name="valor_produto2")
	private Float valorProduto2;
//gets e sets

CotacaoMB.java

@SessionScoped
@ManagedBean(name="cotacaoMB")
public class CotacaoMB {
	
	private Cotacao cotacao;
	private Cliente cliente;
	private List<Fornecedor> fornecedores;
	
	public CotacaoMB(){
		this.cotacao = new Cotacao();
		this.cliente = new Cliente();
		this.getCliente().setPessoa(new Pessoa());
		this.fornecedores = new ArrayList<Fornecedor>();
	}
	
	
	public String getPrimeiroFornecedor(){
		if(this.getFornecedores() != null && !this.getFornecedores().isEmpty())
			return fornecedores.get(0).getPessoa().getNome();
		else
			return "";
	}
	
	public String getSegundoFornecedor(){
		if(this.getFornecedores() != null && !this.getFornecedores().isEmpty())
			return fornecedores.get(1).getPessoa().getNome();
		else
			return "";
	}
	
	public void setCotacao(Cotacao cotacao) {
		this.cotacao = cotacao;
	}

	public Cotacao getCotacao() {
		return cotacao;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setFornecedores(List<Fornecedor> fornecedores) {
		this.fornecedores = fornecedores;
	}

	public List<Fornecedor> getFornecedores() {
		return fornecedores;
	}
	
}
novaCotacao.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">

	<ui:composition template="/paginas/principais/principal.xhtml">	
		<ui:define name="conteudo">
			<!-- INÍCIO DO FORM DE CADASTRO -->
			<h:form id="novaCotacao">
				<p:message id="menssagens"/>
				<p:outputPanel id="formNovaCotacao">								
					<p:dialog id="dialogo" header="Aguarde..." modal="true" widgetVar="saveDialog" closable="false" height="100" width="60" 
						resizable="false">
						<h:form>
							<p:ajaxStatus style="width:16px;height:16px; position: center;">
								<f:facet name="start">
									<h:graphicImage value="/imagens/loading.gif" style="position: center;"/>
								</f:facet>					
							</p:ajaxStatus>
						</h:form>
					</p:dialog>		
					<p:panel header="Informações da cotação" toggleable="true">
						<h:panelGrid columns="3" cellpadding="2">
							<h:outputLabel value="Número"/>
							<h:outputLabel value="Cliente"/>
							<h:outputLabel value="Data"/>
							<p:inputText id="idNrCotacao" value="#{cotacaoMB.cotacao.idCotacao}" readonly="true" />
							<p:inputText id="idCliente" value="#{cotacaoMB.cliente.pessoa.nome}" readonly="true"/>
							<p:calendar id="idData" value="#{cotacaoMB.cotacao.dtCotacao}" navigator="true" pattern="dd/MM/yyyy" />
						</h:panelGrid>
					</p:panel>
					<p:panel header="Pedido 1" toggleable="true">					
						<h:panelGrid columns="6" cellpadding="2">
							<h:outputLabel value="Produto"/>
							<h:outputLabel value="Valor"/>
							<h:outputLabel value="Quantidade"/>
							<h:outputLabel value="Frete"/>
							<h:outputLabel value="Fornecedor"/>
							<h:outputLabel value="Total"/>
							<p:inputText id="idProduto" value="#{cotacaoMB.cotacao.produto1}"/>
							<p:inputText id="idValor" value="#{cotacaoMB.cotacao.valorProduto1}"/>
							<p:inputMask id="idQuantidade" value="#{cotacaoMB.cotacao.quantidade1}" mask="999999999.99" dir="RLT"/>
							<p:inputMask id="idFrete" value="#{cotacaoMB.cotacao.valorFrete}" mask="999999999.99" dir="RLT"/>
							<p:inputText id="idFornecedor" value="#{cotacaoMB.getPrimeiroFornecedor}"/>
							<p:inputMask id="idTotal" value="#{cotacaoMB.cotacao.totalPedido2}" mask="999999999.99" dir="RLT"/>						
						</h:panelGrid>
					</p:panel>
					<p:panel header="Pedido 2" toggleable="true">					
						<h:panelGrid columns="6" cellpadding="2">
							<h:outputLabel value="Produto"/>
							<h:outputLabel value="Valor"/>
							<h:outputLabel value="Quantidade"/>
							<h:outputLabel value="Frete"/>
							<h:outputLabel value="Fornecedor"/>
							<h:outputLabel value="Total"/>
							<p:inputText id="idProduto2" value="#{cotacaoMB.cotacao.produto1}"/>
							<p:inputText id="idValor2" value="#{cotacaoMB.cotacao.valorProduto1}"/>
							<p:inputMask id="idQuantidade2" value="#{cotacaoMB.cotacao.quantidade1}" mask="999999999.99" dir="RLT"/>
							<p:inputMask id="idFrete2" value="#{cotacaoMB.cotacao.valorFrete}" mask="999999999.99" dir="RLT"/>
							<p:inputText id="idFornecedor2" value="#{cotacaoMB.getPrimeiroFornecedor}"/>
							<p:inputMask id="idTotal2" value="#{cotacaoMB.cotacao.totalPedido2}" mask="999999999.99" dir="RLT"/>						
						</h:panelGrid>		
					</p:panel>
				</p:outputPanel><!-- /formNovaCotacao -->	
			</h:form><!--/novaCotacao -->
		</ui:define>
	</ui:composition>
</html>
Erro:

17/10/2011 23:30:58 com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/paginas/cotacao/novaCotacao.xhtml]
java.lang.NullPointerException
at javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:569)
at org.primefaces.component.message.MessageRenderer.encodeEnd(MessageRenderer.java:36)
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 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:399)
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:306)
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:161)
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:541)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
17/10/2011 23:30:58 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/GPA] threw exception [null] with root cause
java.lang.NullPointerException
at javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:569)
at org.primefaces.component.message.MessageRenderer.encodeEnd(MessageRenderer.java:36)
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 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:399)
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:306)
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:161)
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:541)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)

4 Respostas

sech777

Amigo, boa noite!

Liga o debug no “talo”. Este erro não está dizendo muita coisa. ( Pelo menos para mim! Rs)

Provavelmente algum valor definido para alguma propriedade ‘value’ está nulo.

Certifique-se de que as chamadas de métodos encadeados não estão retornando nulo em algum ponto.

Diguinho.Max

Palpite.

tente estanciar os obejtos no proprio metodo get .

faça um lazy dento do metodo get.

getCotacao(){

if(cotacao == null){

cotacao = new Cotacao();

}

return cotação;

}

assim vc garante que instaciou o objeto !
jsf trabalha com get e setters

espero ter ajudado!

G

Obrigado pelas respostas galera, vou seguir as dicas de vcs e dar uma analisada! A propósito, como assim ligar o debug no talo? Eu sei que a msg ta beeemm incompleta rs mas n sei como fazer ela ser mais precisa, alguma dica?

G

Boa noite a todos, resolvi o meu problema, não sei a causa ao certo até porque não tive tempo de analisar o comportamento da tag <p:mesage>. O caso era que eu deveria estar usando o <p:mesages> e não o <p:mesage>.

Criado 17 de outubro de 2011
Ultima resposta 19 de out. de 2011
Respostas 4
Participantes 3