Passar bean entre paginas jsf

Opa :smiley:

Tenho uma tela de login que busca o login e seta os dados da empresa e depois redireciona pra tela de empresa, só q como eu seto os dados no bean ( javabean ) no login ( managed bean ), na hora q eu chego na empresa ( managed bean ), meu empresaBean ta nulo…alguém sabe como q eu resolvo isso?

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 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-facesconfig_1_2.xsd">
 <managed-bean>
  <managed-bean-name>empresa</managed-bean-name>
  <managed-bean-class>br.com.portaldascargas.jsf.bean.empresa.Empresa</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>login</managed-bean-name>
  <managed-bean-class>br.com.portaldascargas.jsf.bean.login.Login</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <navigation-rule>
  <from-view-id>/paginas/login/login.jsp</from-view-id>
  <navigation-case>
   <from-outcome>logado</from-outcome>
   <to-view-id>/paginas/empresa/main.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>
</faces-config>

Login.java ( managed bean )

public class Login {
	private EmpresaBean empresaBean;
	
	public Login(){
		empresaBean = new EmpresaBean();
	}

	public EmpresaBean getEmpresaBean() {
		return empresaBean;
	}
	
	public String logar(){
		LoginDAO dao = new LoginDAO(br.com.portaldascargas.bean.login.LoginBean.class);
		dao.findByLogin(getEmpresaBean().getLogin());
		return "logado";
	}
}

e o Empresa.java ( managedBean )

public class Empresa {
	private EmpresaBean empresaBean;

	public EmpresaBean getEmpresaBean(){
		return empresaBean;
	}
}

Notem que eu tenho o Empresa.java que é o bean do jsf e meu EmpresaBean que só tem os atributos, gets e sets…

Tem como eu passar o empresaBean do Login.java para o Empresa.java?

Se eu fizer:

public Empresa(){
		Map<String, Object> mapa = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
		login = (Login)mapa.get("login");

	}

Eu consigo pegar o Bean…existe outra maneira de fazer isso? To achando meio porco hehe

[]'s

É muito importante que você entenda a comunicação com JSF,

Legal rponte, muito obrigado pelas dicas :smiley:

Muito bom esse site e eu já tinha noção sobre como o JSF trabalhava, porém tinha algumas dúvidas e esse site resolveu elas. Notei que ele fez como eu fiz para passar o Bean hehe

Seu site está show de bola, gostei do texto sobre o jsf de maneira produtiv, só que por enquanto não vou por muitas requisições ajax, não conheço a máquina do cliente hehe

Valeu pela ajuda.

[]'s