Jsf + Hibernate erro java.lang.NullPointerException

10 respostas
jorhudson

Boa noite galera, estou recebendo essa exception quando tento atualizar um cadastro numa tabela.

Eu tenho uma função na minha classe GerenciarPessoa.java

public void updatePessoa(ActionEvent event){
		PessoaDao pd = new PessoaDao();
		UIParameter parameter = (UIParameter)event.getComponent().findComponent("idPessoa");
		int id = Integer.parseInt(parameter.getValue().toString()); //Eu fiz debug e aqui para a função. 
		this.pessoa.setIdPessoa(id);
		try {
			pd.updatePessoa(this.pessoa);
		} catch (Exception e) {
			e.printStackTrace();
		}
		TelefoneDao td = new TelefoneDao();
		this.telefone.setIdTelefone(id);
		try {
			td.updateTelefone(this.telefone);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
<rich:column style="text-align:center">
					<f:facet name="header">
						<h:outputText value="Excluir" />
					</f:facet>
					<h:commandLink value="Excluir"
						onclick="return confirm('Deseja realmente excluir?');"
						style="font-weight:bolder;text-decoration:none"
						actionListener="#{GP.excluirPessoa}">
						<f:param id="idPessoa" name="idPesoa" value="#{con.idPessoa}" />
					</h:commandLink>
				</rich:column>
				<rich:column>
					<f:facet name="header">
						<h:outputText value="Editar" />
					</f:facet>
					<a4j:commandLink value="Editar" ajaxSingle="true" id="edits"
						oncomplete="#{rich:component('editpes')}.show()">
						
					</a4j:commandLink>
				</rich:column>
			</rich:dataTable>
		</h:form>

		<h:form>
			<rich:modalPanel id="editpes" autosized="true" width="450">
				<f:facet name="header">
					<h:outputText value="Edição do Contato" />
				</f:facet>
				<h:panelGrid columns="1">
					<h:outputText style="font-size:12;font-weight:bold" value="Nome:" />
					<h:inputText value="#{GP.pessoa.nome}" id="nome" required="true"
						requiredMessage="*Campo Nome Obrigatório" />
					<h:message for="nome"
						style="color:red;font-weight:bold;font-size:12"></h:message>
					<h:outputText style="font-size:12;font-weight:bold"
						value="Residencial:" />
					<h:inputText id="res" value="#{GP.telefone.residencial}"
						required="true" requiredMessage="*Campo Residencial Obrigatório" />
					<h:message for="res"
						style="color:red;font-weight:bold;font-size:12" />
					<h:outputText style="font-size:12;font-weight:bold"
						value="Celular:" />
					<h:inputText id="cel" value="#{GP.telefone.celular}" />
					<h:outputText style="font-size:12;font-weight:bold"
						value="Comercial:" />
					<h:inputText id="com" value="#{GP.telefone.comercial}" />
				</h:panelGrid>
				<h:commandLink value="Atualizar"
						style="font-weight:bolder;text-decoration:none"
						actionListener="#{GP.excluirPessoa}">
					<f:param id="idPessoa" name="idPesoa" value="#{con.idPessoa}" />
				</h:commandLink>
			</rich:modalPanel>
		</h:form>
30/05/2012 22:27:05 javax.faces.event.MethodExpressionActionListener processAction
GRAVE: 'java.lang.NullPointerException' recebido ao invocar escuta de ação '#{GP.excluirPessoa}' para o componente 'j_id_jsp_644619704_43'
30/05/2012 22:27:05 javax.faces.event.MethodExpressionActionListener processAction
GRAVE: java.lang.NullPointerException
	at manager.GerenciarPessoa.excluirPessoa(GerenciarPessoa.java:60)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:144)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:84)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:773)
	at javax.faces.component.UICommand.broadcast(UICommand.java:296)
	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
	at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:532)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	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:852)
	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(Unknown Source)

30/05/2012 22:27:05 org.ajax4jsf.component.AjaxViewRoot processEvents
GRAVE: Error processing faces event for the component j_id_jsp_644619704_29:j_id_jsp_644619704_43
javax.faces.event.AbortProcessingException: /consultapessoa.jsp(107,4) '#{GP.excluirPessoa}' java.lang.NullPointerException
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:178)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:84)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:773)
	at javax.faces.component.UICommand.broadcast(UICommand.java:296)
	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
	at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:532)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	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:852)
	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(Unknown Source)
Caused by: java.lang.NullPointerException
	at manager.GerenciarPessoa.excluirPessoa(GerenciarPessoa.java:60)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:144)
	... 32 more

10 Respostas

Hebert_Coelho

A própria mensagem de erro diz onde está o problema.
Olha nessa linha: at manager.GerenciarPessoa.excluirPessoa(GerenciarPessoa.java:60)

Alguma coisa está null aí.

jorhudson

jakeflog como vc disse está passando Null. Mas eu tenho um outro método que segue abaixo e funciona sendo a mesma coisa para fazer.

public void excluirPessoa(ActionEvent event) {
		PessoaDao pd = new PessoaDao();
		UIParameter parameter = (UIParameter) event.getComponent()
				.findComponent("idPessoa");

		int idPessoa = Integer.parseInt(parameter.getValue().toString());
		FacesContext context = FacesContext.getCurrentInstance();
		String mensagem = "";

		try {
			Pessoa pessoa = new Pessoa();
			pessoa.setIdPessoa(idPessoa);
			pd.deletePessoa(pessoa);
			mensagem = "*Contato Excluido Com Exito!";
			listarTodos();
		} catch (Exception e) {
			mensagem = "Erro ao excluir Contato" + e.getMessage();
		}
		FacesMessage fm = new FacesMessage(mensagem);
		context.addMessage("form3", fm);
	}

Eu to achando que
quando eu chamo uma tag <rich:modalPanel></rich:modalPanel> para receber os dados do object para o usuário atualizar,

eu não consiguo ver minha lista da <rich:datatable>

Isso é correto o que eu disse ?

Hebert_Coelho

Sem ofensa mano, mas se tivesse a mesma coisa c tb teria o erro… =/

Coloca aí o que dá o erro. vamo v. posta pouco código igual ao que você colocou aí que funciona.

jorhudson

Então segue abaixo os dois métodos … o Excluir funciona o Update não;

public void excluirPessoa(ActionEvent event) {
		PessoaDao pd = new PessoaDao();
		UIParameter parameter = (UIParameter) event.getComponent()
				.findComponent("idPessoa");

		int idPessoa = Integer.parseInt(parameter.getValue().toString());
		FacesContext context = FacesContext.getCurrentInstance();
		String mensagem = "";

		try {
			Pessoa pessoa = new Pessoa();
			pessoa.setIdPessoa(idPessoa);
			pd.deletePessoa(pessoa);
			mensagem = "*Contato Excluido Com Exito!";
			listarTodos();
		} catch (Exception e) {
			mensagem = "Erro ao excluir Contato" + e.getMessage();
		}
		FacesMessage fm = new FacesMessage(mensagem);
		context.addMessage("form3", fm);
	}
	public void updatePessoa(ActionEvent event){
		PessoaDao pd = new PessoaDao();
		UIParameter parameter = (UIParameter)event.getComponent().findComponent("idPessoa");
		int id = Integer.parseInt(parameter.getValue().toString());
		this.pessoa.setIdPessoa(id);
		try {
			pd.updatePessoa(this.pessoa);
		} catch (Exception e) {
			e.printStackTrace();
		}
		TelefoneDao td = new TelefoneDao();
		this.telefone.setIdTelefone(id);
		try {
			td.updateTelefone(this.telefone);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

Aqui segue minha pagina .jsp

<rich:column style="text-align:center">
					<f:facet name="header">
						<h:outputText value="Excluir" />
					</f:facet>
					<h:commandLink value="Excluir"
						onclick="return confirm('Deseja realmente excluir?');"
						style="font-weight:bolder;text-decoration:none"
						actionListener="#{GP.excluirPessoa}">
						<f:param id="idPessoa" name="idPessoa" value="#{con.idPessoa}" /> <%-- Aqui eu passo como parâmetro o id da pessoa --%>
					</h:commandLink>
				</rich:column>
		<rich:column>
					<f:facet name="header">
						<h:outputText value="Editar" />
					</f:facet>
					<a4j:commandLink value="Editar" ajaxSingle="true" id="edits"
						oncomplete="#{rich:component('editpes')}.show()">
						  <f:setPropertyActionListener value="#{con}"
                            target="#{GP.currentItem}" />
                        <f:setPropertyActionListener value="#{row}"
                            target="#{GP.currentRow}" />
					</a4j:commandLink>
				</rich:column>
			</rich:dataTable>
		</h:form>

			<rich:modalPanel id="editpes" autosized="true" width="450">
				<f:facet name="header">
					<h:outputText value="Edição do Contato" />
				</f:facet>
		<h:form>
				<h:panelGrid columns="1">
                <a4j:outputPanel ajaxRendered="true">
                    <h:panelGrid columns="2">
                        <h:outputText value="Nome:" />
                        <h:inputText value="#{GP.pessoa.nome}" />
                    </h:panelGrid>
                     </a4j:outputPanel>
				<a4j:commandButton value="Atualizar"
						style="font-weight:bolder;text-decoration:none"
						actionListener="#{GP.updatePessoa}" reRender="nome">
					<f:param id="idPessoa" name="idPessoa" value="#{con.idPessoa}" /> <%-- Aqui estou tentando passar como parâmetro o id da pessoa --%>
				</a4j:commandButton>
				</h:panelGrid>
		</h:form>
			</rich:modalPanel>
Hebert_Coelho

Repara que em um você tem <h:commandLink no outro um a4j:commandLink.

Isso tudo dá diferença cara.

jorhudson

Uma ótima observação … Irei fazer uns testes e depois postarei o resultado.

jorhudson

Vc tinha razão … mudei minha função que estava funcionando do Excluir utilizando as tags <a4j:commandLink></a4j:commandLink>

Qual atributo que eu poderia definir no

para chamar a função #{rich:component(‘editpes’)}.show()" … Já tentei varios atributos e não estou conseguindo chamar

o modelPanel …

Estou vendo no JavaDoc… Se poder me Ajudar. Desde já agradeço tudo … Vlw.

Hebert_Coelho

Saco muito de richfaces não, imagino eu que você realmente terá que utilizar o a4j:commandLink.
Veja se no editar se o método <f:setPropertyActionListener value="#{con}“
target=”#{GP.currentItem}" /> e se você está utilizando esse cara corretamente.

Você pode tentar fazer do mesmo modo: <f:param id=“idPessoa” name=“idPessoa” value="#{con.idPessoa}" />

jorhudson

Irei fazer os testes …

jorhudson

Consertei algumas coisas no meu código.

Agora consegui resgatar o objeto que eu vou editar com as tags

E utilizei o

Passando meu Objeto para o ManagerBean.

Brigado pela dicas jakeflog … Não vejo a hora de trabalhar na área JAva.

Criado 30 de maio de 2012
Ultima resposta 1 de jun. de 2012
Respostas 10
Participantes 2