Javax.el.PropertyNotFoundException

0 respostas
L

Caros amigos do forum… estou com o seguinte erro:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: /funcionario.xhtml @113,113 value="#{managedBeanFuncionario.funcionario.usuario.email}": Target Unreachable, usuario returned null

javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)

org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)

org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)

org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)

org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)

root cause

javax.el.PropertyNotFoundException: /funcionario.xhtml @113,113 value="#{managedBeanFuncionario.funcionario.usuario.email}": Target Unreachable, usuario returned null

com.sun.facelets.el.TagValueExpression.getType(TagValueExpression.java:62)

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

javax.faces.component.UIInput.getConvertedValue(UIInput.java:934)

javax.faces.component.UIInput.validate(UIInput.java:860)

javax.faces.component.UIInput.executeValidate(UIInput.java:1065)

javax.faces.component.UIInput.processValidators(UIInput.java:666)

javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)

org.ajax4jsf.component.UIAjaxForm.processValidators(UIAjaxForm.java:82)

javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)

javax.faces.component.UIInput.processValidators(UIInput.java:664)

javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)

org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:447)

org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:240)

org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:463)

com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)

com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)

com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)

javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)

org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)

org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)

org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)

org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)

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

Meu MB e minha classes estão assim:

package controle;

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

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

import persistencia.EnderecoDao;
import persistencia.FuncionarioDao;
import persistencia.UsuarioDao;

import entidade.Funcionario;

public class ManagedBeanFuncionario implements Serializable {
	private static final long serialVersionUID = 1L;
	private List<Funcionario> lista = new ArrayList<Funcionario>();
	private Funcionario funcionario = null;

	public ManagedBeanFuncionario() {
		if(this.funcionario == null){
			this.funcionario = new Funcionario();
		}
	}

	public List<Funcionario> getLista() throws Exception {
		for(Object obj : new FuncionarioDao().lista(Funcionario.class)){
			lista.add((Funcionario) obj);
		}
		
		return lista;
	}

	public void setLista(List<Funcionario> lista) {
		this.lista = lista;
	}

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}
	
	public void recuperaFuncionario() {
		this.funcionario = (Funcionario) ((HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest()).getAttribute("dados");
	}
	
	public void incluir() throws Exception {
		FacesContext fc = FacesContext.getCurrentInstance();
		String mensagem = null;
		boolean flag = true;
		
		if(this.funcionario.getNome().trim().length() <= 0 || this.funcionario.getNome().trim() == null){
			mensagem = "Digite o nome do funcionário";
			this.funcionario.setNome(this.funcionario.getNome().trim());
			flag = false;
			
			fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
		}
		
		if(this.funcionario.getSexo().trim().length() <= 0 || this.funcionario.getSexo().trim() == null){
			mensagem = "Selecione o sexo do funcionário";
			flag = false;
			
			fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
		}
		
		if(this.funcionario.getDataNascimento() == null){
			mensagem = "Indique a data de nascimento do funcionário";
			flag = false;
			
			fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
		}
		
		if(this.funcionario.getEndereco().getEndereco().trim().length() <= 0 || this.funcionario.getEndereco().getEndereco().trim() == null){
			mensagem = "Digite o endereço do funcionário";
			this.funcionario.getEndereco().setEndereco(funcionario.getEndereco().getEndereco().trim());
			flag = false;
			
			fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
		}
		
		if(this.funcionario.getUsuario().getLogin().trim().length() <= 0 || this.funcionario.getUsuario().getLogin().trim() == null){
			mensagem = "O funcionário deve ter um login de acesso";
			this.funcionario.getUsuario().setLogin(funcionario.getUsuario().getLogin().trim());
			flag = false;
			
			fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
		}else{
			UsuarioDao usuarioDao = new UsuarioDao();
			
			if(usuarioDao.verificaLogin(this.funcionario.getUsuario().getLogin().trim())){
				mensagem = "login já cadastrado";
				flag = false;
				
				fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
			}
		}
		
		if(this.funcionario.getUsuario().getPerfil() == 0){
			mensagem = "Escolha o perfil de acesso do funcionário";
			flag = false;
			
			fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
		}
		
		if(flag){
			EnderecoDao enderecoDao = new EnderecoDao();
			enderecoDao.save(this.funcionario.getEndereco());
			
			this.funcionario.getUsuario().setSenha("sistemaqf");
			UsuarioDao usuarioDao = new UsuarioDao();
			usuarioDao.save(this.funcionario.getUsuario());
			
			FuncionarioDao funcionarioDao = new FuncionarioDao();
			funcionarioDao.save(this.funcionario);
		}
	}
	
	public void alterar() {
	}
	
	public void excluir() {
	}
	
	public void buscaNome() {
	}
}
package entidade;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="funcionario")
public class Funcionario extends Pessoa implements Serializable {
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(length=10)
	private int idFuncionario;
	
	public Funcionario() {
		this.endereco = new Endereco();
		this.usuario = new Usuario();
	}
	
	public int getIdFuncionario() {
		return idFuncionario;
	}
	
	public void setIdFuncionario(int idFuncionario) {
		this.idFuncionario = idFuncionario;
	}
}

Como podem ver, no construtor de Funcionário eu instacio Usuario e Endereço, sendo assim eles ñ estão nulos. Meu web.xml está assim:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<display-name>sistemaQualityFisio</display-name>

	<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>*.sqf</url-pattern>
	</servlet-mapping>
	
	<context-param>
		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
		<param-value>client</param-value>
	</context-param>
	
	<context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.xhtml</param-value>
	</context-param>
	
	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<param-value>blueSky</param-value>
	</context-param>
	
	<context-param>
		<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
		<param-value>com.sun.facelets.FaceletViewHandler</param-value>
	</context-param>
	
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	
	<filter>
		<display-name>RichFaces Filter</display-name>
		<filter-name>richfaces</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
	</filter>
	
	<filter-mapping>
		<filter-name>richfaces</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>
</web-app>

Se alguém puder dar uma luz de como resolver isso agradeço muito… o erro corre quando o método incluir é chamado

Criado 30 de julho de 2010
Respostas 0
Participantes 1