Com Chamar ModalPanel Com Condição? [RICHFACES]

Bom eu faço aqui no sistema da empresa, chamadas na tela de modalpanel’s
geralmente eu uso assim…

oncomplete="if (#{facesContext.maximumSeverity!=null}) #{r:component('meuModalPanel')}.show();"

Eu Preciso Utilizar um IF Parecido Com Akele, Porém eu preciso verificar uma variavel que está no ManagedBean…
Tem Como eu Acessar Pela Página um Atributo ou Variavel que está no Meu ManagedBean???

Se Alguem Puder me Ajudar Muito Obrigado :smiley:

vc pode chamar o modal panel passando a string de abertura dele direto de seu ManagedBean. Voce faz os testes que precisa no managed bean e então vc retorna uma string como:

"Richfaces.showModalPanel('seuModal')"; dependendo da sua validação, se não for pra exibir vc passa a String vazia da nada será exibido. E na sua view vc coloca (exemplo com um commandLink mas pode ser qualquer outro componente):

<a4j:commandLink id="idDoSeuComponente" actionListener="#{seuMB.getSuaAcao}" reRender="idDoComponenteQueDesejareexibir" oncomplete="#{seuMB.suaStringDeExibicaoDoModalPanel}" >

[]'s

Então Como Eu Mostrar eu sei

#{r:component('meuModalPanel')}.show();"

O q eu Preciso eh q isso aconteça num IF…
tipo no exemplo q eu dei ali…
if( variavelX == true) #{r:component(‘meuModalPanel’)}.show();"

Eu Preciso Conseguir Manipular essa Variavel dentro da pagina entendeu???

É só vc chamar um metodo no mb que verifica o valor da variavel e devolve a string para exibição do modal no metodo oncomplete, isso teria o mesmo efeito de vc fazer o if na view, além do que vc estaria colocando a lógica no managed bean o que é muito aconselhável.

[]'s

bota um rendered no na tag do modalPanel verificando a variavel no managedbean. dependendo do estado ele mostra ou nao. simples assim!

Cara, se vc não quer fazer mágicas/gambiarras, sugiro que vc uso o atributo data.
Com ele, vc vai ter um objeto JSON durante a execução do JavaScript do oncomplete com o estado de algum atributo do ManagedBean.
Exemplo:

<a4j:commandButton action="#{meuManagedBean.acao}" data="#{meuManagedBean.podeAbrirModal}" oncomplete="if(data) {funcaoJavaScriptQueAbreModal();}"/>

Dai, na execução do método acao() vc popula o atributo podeAbrirModal com um booleano, e quando o método acabar, e o request Ajax retornar ao navegador, ele irá levar junto o valor deste booleano.