Posso/Como usar dois Managed Beans ao mesmo tempo?

5 respostas
Vin_ius_Abreu_de_Fra

Bem simples, tenho se seguinte código:

...
<p:inputMask id="autoCompleteEnderecoCidadesCEP" value="#{cidadeMB.cidade.endereco.cep}" mask="99999-999" style="width: 80px;"/>
        <p:commandButton actionListener="#{cepMB.consultaCEP()}" icon="ui-icon-search" title="Consulta nos correios e autopreenche"
                                                     update=":tabViewSistema:tabViewCadastro:formAddCidades:panelAddCidadesT3">
                      <f:setPropertyActionListener value="#{cidadeMB.cidade.endereco}" target="#{cepMB.endereco}"/>
        </p:commandButton>
...

O que eu quero com isso? Quero preencher o endereço da Cidade que está no cidadeMB com o valor do endereço retornado por consultaCEP() só que quero usar assim, os dosi managed beans pra que fiquei reutilizável, tem como?

Obrigado a todos!

5 Respostas

D

Bom dia amigo aparentemente o modelo proposto funcionário, você chegou a executar o teste, para verificar se funciona?

augustovieira

Em algum lugar de seu xhtml você seta o nome do Bean? tipo
Ou você poderia instanciar o Outro bean dentro do bean que você já possui e chamar seu método de lá.

Vin_ius_Abreu_de_Fra

augustovieira Não entendi como faço para pegar o bean como esse código… Tá correto essa tag aí? Sobre instanciar um dentro do outro isso é justamente o que não quero fazer… Valeu!

RicardoYukito
public static Object getBeanInSession(String ref) {    
	    FacesContext facesContext = FacesContext.getCurrentInstance();   
	    
	    ELContext elContext = facesContext.getELContext();    
	    ExpressionFactory factory = facesContext.getApplication().getExpressionFactory();    
	    return factory.createValueExpression(elContext, "#{" + ref + "}",Object.class).getValue(elContext);    
	}

so chamar que voce pega o bean que ta na sessao, voce trabalhando ele com View ou session scope da certo ;)
[/code]
BEAN meubean = (Cast pro seu bean) getBeanInSession(" NOME do bean");
[code]

Vin_ius_Abreu_de_Fra

A maioria dos exemplos que vejo na internet usam o mesmo bean, sendo que se eu tenho um bean cidadeMB e outro bean cepMB então eu queria usar o cepMB somente para passar um valor e ele retornar o valor que vai ser usado por outro bean (pelo bean cidade) na própria view, mais ou menos como passei no código.

Poderia esquecer essa idéia de criar outro managed bean apenas para tratar de ceps mas assim teria que criar um novo método em cada managed bean de entidade que queria usar na aplicação tipo cidade, endereço, etc… Será que seria a maneira mais correta? Não acho…

Criado 20 de julho de 2012
Ultima resposta 20 de jul. de 2012
Respostas 5
Participantes 4