"Pegar" ManagedBean em execução

3 respostas
L

Olá pessoal!

Gostaria de saber, se alguem possui algum exemplo de como eu pegar o MB que esta sendo executado na minha aplicação
e setar ele como #{currentBean}.

Eu estou utilizando primeFaces e tenho o seguinte Dialog

<p:dialog id="dlgCidades" modal="true" header="Lista de cidades" width="550" resizable="false" widgetVar="dlgCidades" >
            <h:form id="formDlgCidades">
                <h:panelGroup id="listCity">
                <p:dataTable var="city" value="#{motoristaMB.cidades}" paginator="true" emptyMessage="Nenhum registro encontrado"
                             rows="10" selectionMode="single" onselectComplete="dlgCidades.hide()" >
                  </p:dataTable>
                </h:panelGroup>
              </h:form>

Desta maneira que foi criado ele será apresentado quando o MB que estiver sendo utilizado seja o MotoristaMB.

Gostaria que este pedaço de codigo fosse desta maneira:

<p:dialog id="dlgCidades" modal="true" header="Lista de cidades" width="550" resizable="false" widgetVar="dlgCidades" >
            <h:form id="formDlgCidades">
                <h:panelGroup id="listCity">
                <p:dataTable var="city" value="#{currentBean.cidades}" paginator="true" emptyMessage="Nenhum registro encontrado"
                             rows="10" selectionMode="single" onselectComplete="dlgCidades.hide()" >
                  </p:dataTable>
                </h:panelGroup>
              </h:form>

Sendo desta forma, bastaria o meu MB ter o metodo que retornasse uma lista de cidades que seria executado… pois iria pegar o MB que tivesse sendo executado
e nao precisando criar varios outros Dialogs.

Não sei se me entenderam, mas alguem sabe como posso fazer isso? Sei que da para fazer isso, porem não sei como…

3 Respostas

L

hmmm =/

rafaduka

vc não pode criar um método genérico?
passando algum parâmetro referente a cada página e este único método criar a lista de cidades específica? de acordo com a página atual?

public List<String> listaCidades(){
List<String> list = new ArrayList<String>();
switch(getParametro()){
case 1:
//retorna lista para aquela pagina

case 2:
//retorna lista para outra página
}

return list;
}

para passar o parametro poderia utilizar assim:

<f:setPropertyActionListener target="#{bean.parametro}" value="1">

é só um exemplo grosseiro :wink:

G

Não entendi bem o que você precisa mas tenho algo que acho que vai te ajudar:

//recupera da sessão o manageBean de pessoa populado e insere na instancia pessoaMB por atribuição
this.pessoaMB = (PessoaMB) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("pessoaBean");

Era isto?

Criado 28 de agosto de 2011
Ultima resposta 30 de ago. de 2011
Respostas 3
Participantes 3