Acesso a um outro managedbean

2 respostas
E

ola amigo sou novo por aqui, e novo em jsf tb.
bem, estou desenvolvendo um projeto e estou com uma duvida grande, bem meu problema é o seguinte: no meu projeto tudo o sistema é iniciado quando seleciona uma empresa na pagina inicial dai todas as operaçoes dos outros managedbean dependem da empresa que o usuario selecionou,os os parametros dos selects, inserts, etc. eu a principio pensei em utilizar um managedbean como um perfil de acesso que inicialmente seria preenchido com os dados de acordo com a empresa selecionada pelo usuario,dai surgui tem como eu acessar os dados de uma sessão de um outro managebean? se sim, seria isso a maneira mais facil de fazer? seria a maneira corretade fazer?

desde ja agradeço a quem responder,

2 Respostas

Bravox

eurival:
tem como eu acessar os dados de uma sessão de um outro managebean?

Se vc quer trafegar objetos de um mb para outro a resposta é sim , eu já fiz de duas formas:

1º obtendo a sessão da aplicação

HttpSession session = 
        (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);

// add o atributo na sessão
session.setAttribute("seu atributo", seu objeto);

// recupera o atributo da sessão 
session.getAttribute("seu atributo");

2º através do faces-config.xml

<managed-bean>
        <managed-bean-name>nome do seu mb</managed-bean-name>
        <managed-bean-class>clase do seu mb</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
	<managed-property>
		<property-name> nome do atributo do seu mb</property-name>
		<property-class>nome qualificado da classe do mb ( pacote + nome clase )</property-class>
		<value>#{nome do mb que vai vir o atributo + . + atributo ex: mb.atributo}</value>
	</managed-property>
</managed-bean>

eurival:
se sim, seria isso a maneira mais facil de fazer? seria a maneira corretade fazer?

não sei se são as mais fáceis ou as mais corretas, mas já pesquisei muito na net e achei muito pouco sobre isso, se alguém poder opinar sobre está questão seria bem vindo !

E

Primeiramente quero agradecer a atenção do Bravox pela resposta. Apos postar a mensagem andei procurando e encontrei mas uma forma tb olha o codigo abaixo:

public Principal getSessionBackingBean() {

Principal principal = new Principal();

Object object = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(“manageBeanEmpresa”);
// Isso só funciona se o meuSessionBackingBean for de Sessão   
    if (object != null) {   
        ManageBeanEmpresa meuBean = (ManageBeanEmpresa ) object;   
        principal = meuBean.getEmpresa();   
    }
    return principal;
}

Problema resolvido agora posso carregar todas as configuraçoes iniciais no mb manageBeanEmpresa e acessar de qualquer um outro. Mais uma vez agradeço a atençao do Bravox.

Criado 15 de janeiro de 2008
Ultima resposta 15 de jan. de 2008
Respostas 2
Participantes 2