Target Unreachable, 'pessoa' returned null [resolvido]

Pessoal, estou recebendo o erro Target Unreachable, 'pessoa' returned null nessa linha da minha page autentica.xhtml value="#{autenticacaoBean.usuario.funcionario.pessoa.cpf}"

O CPF é a chave de acesso ao sistema, porém ele ta travando nessa linha. Alguém pode me dizer onde estou errando?

<p:dialog header="Autenticação" closable="false" draggable="false"
	resizable="false" global="true" visible="true">
	<h:form>
		<h:panelGrid columns="2">
			<p:outputLabel for="cpf" value="CPF:" />
			<p:inputMask id="cpf" mask="999.999.999-99" size="20"
				required="true" requiredMessage="O campo CPF é obrigatório" 
				value="#{autenticacaoBean.usuario.funcionario.pessoa.cpf}"/>

			<p:outputLabel for="senha" value="Senha:" />
			<p:password id="senha" maxlength="8" size="20" required="true"
				requiredMessage="O campo Senha é obrigatório" 
				value="#{autenticacaoBean.usuario.senha}"/>
		</h:panelGrid>

		<h:panelGrid columns="1">
			<p:commandButton value="Entrar" update=":mensagem"
			actionListener="#{autenticacaoBean.autenticar}" />
		</h:panelGrid>
	</h:form>
</p:dialog>

autenticaoBean

@ManagedBean
@SessionScoped
public class AutenticacaoBean {
	private Usuario usuario;
	private Usuario usuarioLogado; 
	
	public Usuario getUsuarioLogado() {
		return usuarioLogado;
	}
	
	public void setUsuarioLogado(Usuario usuarioLogado) {
		this.usuarioLogado = usuarioLogado;
	}
	
	public Usuario getUsuario() {
		return usuario;
	}
	
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
	@PostConstruct
	public void inciar() {
		usuario = new Usuario();		
		usuario.setFuncionario(new Funcionario());
	}
	
	public void autenticar() {
		try {
			System.out.println("OK a");
			UsuarioDAO usuariodao = new UsuarioDAO();
			usuarioLogado = usuariodao.autenticar(usuario.getFuncionario().getPessoa().getCpf(), usuario.getSenha());
			System.out.println("OK a2");
			if(usuarioLogado == null) {
				Messages.addGlobalError("CPF ou Senha incorretos");
				return;
			}
			
			Faces.redirect("./pages/principal.xhtml");
		}catch(IOException erro){
			erro.printStackTrace();
		}
		
	}
	
	public boolean temPermissoes(List<String>permissoes) {
		
		for(String permissao : permissoes) {
			if(usuarioLogado.getTipo() == permissao.charAt(0)) {
				
				return true;
			}
		}
		return false; 
	}
}

O atributo pessoa não foi inicializado.

1 curtida

Atualizei o AuteticacaoBean assim:

@ManagedBean
@SessionScoped
public class AutenticacaoBean {
	private Usuario usuario;
	private Usuario usuarioLogado; 
	private Funcionario funcionario;
	private Pessoa pessoa;
	
	public Usuario getUsuarioLogado() {
		return usuarioLogado;
	}
	
	public void setUsuarioLogado(Usuario usuarioLogado) {
		this.usuarioLogado = usuarioLogado;
	}
	
	public Usuario getUsuario() {
		return usuario;
	}
	
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
	public Funcionario getFuncionario() {
		return funcionario;
	}
	
	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}
	
	public Pessoa getPessoa() {
		return pessoa;
	}
	
	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
	
	@PostConstruct
	public void inciar() {
		usuario = new Usuario();
		funcionario = new Funcionario();
		
		usuario.setFuncionario(new Funcionario());
		funcionario.setPessoa(new Pessoa());
		
		
	}
	
	public void autenticar() {
		try {
			System.out.println("OK a");
			UsuarioDAO usuariodao = new UsuarioDAO();
			usuarioLogado = usuariodao.autenticar(usuario.getFuncionario().getPessoa().getCpf(), usuario.getSenha());
			System.out.println("OK a2");
			if(usuarioLogado == null) {
				Messages.addGlobalError("CPF ou Senha incorretos");
				return;
			}
			
			Faces.redirect("./pages/principal.xhtml");
		}catch(IOException erro){
			erro.printStackTrace();
		}
		
	}
	
	public boolean temPermissoes(List<String>permissoes) {
		
		for(String permissao : permissoes) {
			if(usuarioLogado.getTipo() == permissao.charAt(0)) {
				
				return true;
			}
		}
		return false; 
	}
}

Mas ainda recebo o mesmo erro

Deu certo, resolvi fazendo assim.

@PostConstruct
public void inciar() {
	usuario = new Usuario();
	funcionario = new Funcionario();
	
	funcionario.setPessoa(new Pessoa());
	usuario.setFuncionario(funcionario);
	
}