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

5 respostas
colored

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:

5 Respostas

thiagocg

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

colored

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???

thiagocg

É 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

thimor

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

C

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.

Criado 3 de março de 2010
Ultima resposta 3 de mar. de 2010
Respostas 5
Participantes 4