Erro JSF

22 respostas
G

Boa Tarde gente,

Está acontecendo um erro ao acionar o botão “Enviar” na página JSF, dar este erro abaixo:
Alguem sabe o que pode ser?

Jun 05, 2013 2:50:30 PM org.apache.catalina.core.AprLifecycleListener init

INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Arquivos de programas\Java\jre7\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Arquivos de programas/Java/jre7/bin/client;C:/Arquivos de programas/Java/jre7/bin;C:/Arquivos de programas/Java/jre7/lib/i386;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Arquivos de programas\Windows Imaging;C:\Arquivos de programas\TortoiseSVN\bin;;C:\ARQUIV~1\E!PC;C:\Eclipse Indigo\eclipse-jee-indigo-SR2-win32\eclipse;;.

Jun 05, 2013 2:50:31 PM org.apache.tomcat.util.digester.SetPropertiesRule begin

WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property source to org.eclipse.jst.jee.server:prjAgenda did not find a matching property.

Jun 05, 2013 2:50:31 PM org.apache.coyote.AbstractProtocolHandler init

INFO: Initializing ProtocolHandler [http-bio-8080]

Jun 05, 2013 2:50:31 PM org.apache.coyote.AbstractProtocolHandler init

INFO: Initializing ProtocolHandler [ajp-bio-8009]

Jun 05, 2013 2:50:31 PM org.apache.catalina.startup.Catalina load

INFO: Initialization processed in 978 ms

Jun 05, 2013 2:50:31 PM org.apache.catalina.core.StandardService startInternal

INFO: Starting service Catalina

Jun 05, 2013 2:50:31 PM org.apache.catalina.core.StandardEngine startInternal

INFO: Starting Servlet Engine: Apache Tomcat/7.0.12

Jun 05, 2013 2:50:37 PM com.sun.faces.config.ConfigureListener contextInitialized

INFO: Inicializando Mojarra 2.0.4 (FCS b09) para o contexto '/prjAgenda

Jun 05, 2013 2:50:38 PM com.sun.faces.spi.InjectionProviderFactory createInstance

INFO: JSF1048: Anotações PostConstruct/PreDestroy presentes.  Os métodos ManagedBeans marcados com essas anotações informarão as anotações processadas.

Jun 05, 2013 2:50:38 PM org.apache.coyote.AbstractProtocolHandler start

INFO: Starting ProtocolHandler [http-bio-8080]

Jun 05, 2013 2:50:38 PM org.apache.coyote.AbstractProtocolHandler start

INFO: Starting ProtocolHandler [ajp-bio-8009]

Jun 05, 2013 2:50:38 PM org.apache.catalina.startup.Catalina start

INFO: Server startup in 6886 ms

Jun 05, 2013 2:50:44 PM com.sun.faces.lifecycle.ProcessValidationsPhase execute

WARNING: /cadastro.xhtml @29,61 value="#{contatoMB.contato.nome}": Target Unreachable, identifier contatoMB resolved to null

javax.el.PropertyNotFoundException: /cadastro.xhtml @29,61 value="#{contatoMB.contato.nome}": Target Unreachable, identifier contatoMB resolved to null

at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)

at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)

at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1028)

at javax.faces.component.UIInput.validate(UIInput.java:958)

at javax.faces.component.UIInput.executeValidate(UIInput.java:1209)

at javax.faces.component.UIInput.processValidators(UIInput.java:698)

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1085)

at javax.faces.component.UIForm.processValidators(UIForm.java:244)

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1085)

at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1165)

at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)

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

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

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

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

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:462)

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:395)

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

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

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

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)
Jun 05, 2013 2:50:44 PM org.apache.catalina.core.StandardWrapperValve invoke

SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/prjAgenda] threw exception [/cadastro.xhtml @29,61 value="#{contatoMB.contato.nome}": Target Unreachable, identifier contatoMB resolved to null] with root cause

javax.el.PropertyNotFoundException: /cadastro.xhtml @29,61 value="#{contatoMB.contato.nome}": Target Unreachable, identifier contatoMB resolved to null

at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)

at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)

at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1028)

at javax.faces.component.UIInput.validate(UIInput.java:958)

at javax.faces.component.UIInput.executeValidate(UIInput.java:1209)

at javax.faces.component.UIInput.processValidators(UIInput.java:698)

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1085)

at javax.faces.component.UIForm.processValidators(UIForm.java:244)

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1085)

at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1165)

at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)

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

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

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

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

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:462)

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:395)

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

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

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

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Agradeço.

22 Respostas

T

passe tbm seu ManagedBean(contatoMB)

G

TA AÊ A CLASSE:

package controle;

import java.util.ArrayList;
import java.util.List;

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

import modelo.Contato;

@ManagedBean(name = "contatoMB")
@RequestScoped
public class ContatoMB {
	private static final long serialVersionUID = 1L;

	// instancia de Contato
	Contato contato;

	private List<Contato> contatoLista = new ArrayList<Contato>();;

	public ContatoMB() {
		contato = new Contato();
		;

	}

	public Contato getContato() {
		return contato;
	}

	public void setContato(Contato contato) {
		this.contato = contato;
	}

	public List<Contato> getContatoLista() {
		return contatoLista;
	}

	public void setContatoLista(List<Contato> contatoLista) {
		this.contatoLista = contatoLista;
	}

	public String salvarContato() {

		// adicionando contatos na lista
		contatoLista.add(contato);

		// instancia uma nova pessoa a ser cadastrada
		contato = new Contato();
		return "listaContato";
	}

}
T

falta algumas coisas nesse seu managedBean

quais são os atributos dessa classe contato

nome
telefone ?

G

OS atributos estão na classe Contato, e no ContatoBean eu instanciei Contato.

Classes

ContatoBean

package controle;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;



import modelo.Contato;

@ManagedBean (name= "contatoMB")
@SessionScoped 
public class ContatoMB implements Serializable {

	private static final long serialVersionUID = 1L;
	
	Contato contato;

	private List<Contato> contatoLista = new ArrayList<Contato>();

	public ContatoMB() {

		 new Contato();
		
	}

	public Contato getContato() {
		return contato;
	}

	public void setContato(Contato contato) {
		this.contato = contato;
	}

	public List<Contato> getContatoLista() {
		return contatoLista;
	}

	public void setContatoLista(List<Contato> contatoLista) {
		this.contatoLista = contatoLista;
	}

	public String salvarContato() {

		// adicionando contatos na lista
		contatoLista.add(contato);

		// instancia uma nova pessoa a ser cadastrada
		 contato = new Contato();
		return "listaContato";
	}

}

classe Contato

package modelo;


public class Contato {

	private String nome;
	private String email;
	private String telefone;
	private int endereco;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	public int getEndereco() {
		return endereco;
	}
	public void setEndereco(int endereco) {
		this.endereco = endereco;
	}
	
	
	
}
J

faz assim

// instancia de Contato Contato contato;

por:

G

Fiz isso, mas continua o mesmo erro…

Pode ser o Jars do JSF? to usando a versao JSF 2.0…

J

os jars devem ser

jsf-api
jsf-impl

B

Coloca o seu xhtml aí…

G
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<f:view>



		<h3>Cadastro</h3>
		<h:form>
			<h:panelGrid columns="3" style="">

				<h:outputLabel value="Nome:" />
				<h:inputText id="nome" value="#{contatoMB.contato.nome}" size="20"
					required="true" requiredMessage="Campo Obrigatório" />
				<h:message for="nome" />

				<h:outputLabel value="Email:" />
				<h:inputText id="email" value="#{contatoMB.contato.email}" size="30" />


				<h:message for="email" />

				<h:outputLabel value="Telefone:" />
				<h:inputText id="telefone" value="#{contatoMB.contato.telefone}"
					size="9" />
				<h:message for="telefone" />

				<h:commandButton id="btnE" value="Enviar" type="submit"
					action="#{contatoMB.salvarContato}" />
				<h:commandButton id="btnL" value="Limpar" type="reset" />

			</h:panelGrid>

		</h:form>




	</f:view>
</body>
</html>
B

Olha, sou novo nisso tb, masvou dar um pitaco…rs
Será que seu POJO naõ tem que ser Serializable também?

G

Sim…

O ManagedBean estava implementando Serializable…depois que tirei.

Mas o erro era o mesmo…

B

O faces-config.xml está no seu projeto neh?

L

Atribua o novo contato ao atributo Contato do bean.

Não esqueça de colocar ele como privado.

G

O novo contato ja está atribuido ao contato do bean.

E

Amiga seu bean é de request , esta lista que esta usando vai ser renicializada a cada request entao o add não esta servindo muito.
Mostra a pagina listaContato e seu bean!

E

erato690:
Amiga seu bean é de request , esta lista que esta usando vai ser renicializada a cada request entao o add não esta servindo muito.
Mostra a pagina listaContato e seu bean!

Não vi que voçe mudou para session seu bean pode esquercer o que eu falei!

L

gisa_screen:

O novo contato ja está atribuido ao contato do bean.

Pelo que vi você inicializou a lista mas no construtor do back existe apenas um new Contato(), solto sem estar atribuído a ninguém.

Todavia coloca o teu back novamente ai pra gente ver como ficou (caso você tenha alterado mais alguma coisa).

G
package controle;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.SessionScoped;

import modelo.Contato;

@ManagedBean(name = "contatoMB")
@SessionScoped
public class ContatoMB {
	private static final long serialVersionUID = 1L;


	private Contato contato = new Contato();;

	private List<Contato> contatoLista = new ArrayList<Contato>();;

	public ContatoMB() {

	}

	public Contato getContato() {
		return contato;
	}

	public void setContato(Contato contato) {
		this.contato = contato;
	}

	public List<Contato> getContatoLista() {
		return contatoLista;
	}

	public void setContatoLista(List<Contato> contatoLista) {
		this.contatoLista = contatoLista;
	}

	public String salvarContato() {

		// adicionando contatos na lista
		contatoLista.add(contato);

		// instancia uma nova pessoa a ser cadastrada
		contato = new Contato();
		return "listaContato";
	}

}
G

listacontato.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Contatos</title>
</head>
<body>
	<f:view>
		<h:form>
			<h:panelGrid>
				<h:dataTable id="tabelaContato" value="#{contatoMB.contatoLista}"
					var="c" title="Contatos Cadastrados" border="1" rows="10">

					<h:column>
						<f:facet name="header">
							<h:outputText value="NOME" />
						</f:facet>
						<h:outputText value="#{c.nome}" />
					</h:column>

					<h:column>
						<f:facet name="header">
							<h:outputText value="Email" />
						</f:facet>
						<h:outputText value="#{c.email}" />
					</h:column>

					<h:column>
						<f:facet name="header">
							<h:outputText value="Endereço" />
						</f:facet>
						<h:outputText value="#{c.endereco}" />
					</h:column>



				</h:dataTable>

			</h:panelGrid>
		</h:form>
	</f:view>
</body>
</html>
L
gisa_screen:
package controle;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.SessionScoped;

import modelo.Contato;

@ManagedBean(name = "contatoMB")
@SessionScoped
public class ContatoMB {
	private static final long serialVersionUID = 1L;


	private Contato contato = new Contato();;

	private List<Contato> contatoLista = new ArrayList<Contato>();;

	public ContatoMB() {

	}

	public Contato getContato() {
		return contato;
	}

	public void setContato(Contato contato) {
		this.contato = contato;
	}

	public List<Contato> getContatoLista() {
		return contatoLista;
	}

	public void setContatoLista(List<Contato> contatoLista) {
		this.contatoLista = contatoLista;
	}

	public String salvarContato() {

		// adicionando contatos na lista
		contatoLista.add(contato);

		// instancia uma nova pessoa a ser cadastrada
		contato = new Contato();
		return "listaContato";
	}

}

Crie um método publico chamado 'inicializar' por exemplo, e adicione a anotação @PostConstruct nele. Essa anotação indica que o método deve ser executado assim que o back for criado. Nesse caso inicialize todas as variáveis nesse método.

Aproveite e passe seu back para @ViewScoped, pois usar session em jsf2 na maioria dos casos é desnecessário.

G

Ve se fica assim amigo:

package controle;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import modelo.Contato;

@ManagedBean(name = "contatoMB")
@ViewScoped
public class ContatoMB {
	private static final long serialVersionUID = 1L;

	// instancia de Contato
	private Contato contato = new Contato();;

	private List<Contato> contatoLista = new ArrayList<Contato>();

	public ContatoMB() {

	}

	@PostConstruct
	public void inicializar() {

		this.contato = new Contato();
		this.contatoLista = new ArrayList<Contato>();

	}

	public Contato getContato() {
		return contato;
	}

	public void setContato(Contato contato) {
		this.contato = contato;
	}

	public List<Contato> getContatoLista() {
		return contatoLista;
	}

	public void setContatoLista(List<Contato> contatoLista) {
		this.contatoLista = contatoLista;
	}

	public String salvarContato() {

		// adicionando contatos na lista
		contatoLista.add(contato);

		// instancia uma nova pessoa a ser cadastrada
		contato = new Contato();
		return "listaContato";
	}

}

thank you!

L
gisa_screen:
Ve se fica assim amigo:
package controle;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import modelo.Contato;

@ManagedBean(name = "contatoMB")
@ViewScoped
public class ContatoMB {
	private static final long serialVersionUID = 1L;

	// instancia de Contato
	private Contato contato = new Contato();;

	private List<Contato> contatoLista = new ArrayList<Contato>();

	public ContatoMB() {

	}

	@PostConstruct
	public void inicializar() {

		this.contato = new Contato();
		this.contatoLista = new ArrayList<Contato>();

	}

	public Contato getContato() {
		return contato;
	}

	public void setContato(Contato contato) {
		this.contato = contato;
	}

	public List<Contato> getContatoLista() {
		return contatoLista;
	}

	public void setContatoLista(List<Contato> contatoLista) {
		this.contatoLista = contatoLista;
	}

	public String salvarContato() {

		// adicionando contatos na lista
		contatoLista.add(contato);

		// instancia uma nova pessoa a ser cadastrada
		contato = new Contato();
		return "listaContato";
	}

}

thank you!

Isso mesmo, agora é só "tocar o enterro" auhauhaua

Criado 5 de junho de 2013
Ultima resposta 11 de jun. de 2013
Respostas 22
Participantes 6