Dúvida RichFaces - Preciso efetuar uma ação do <rich:effect após uma condição

2 respostas
C
Estou com o seguinte problema:

      [list]Tenho 2 eventos que permitem exibir e esconder um componente rich:panel:   [/list]

         <rich:panel id="pnTeste" > ... </rich:panel>
   
        <rich:effect  name="hidePanel"  for="pnTeste" type="Fade"  />
        <rich:effect  name="showPanel"  for="pnTeste" type="Appear"/>

   
     [list]Quando a pagina é carregada, o componente <rich:panel fica escondido conforme o código: [/list]     

           <body onload="hidePanel({duration:0.0})">



    [list]Quando é efetuado um click no botão inserir da pagina, é chamado o evento para exibir o componente:[/list]

               <a4j:commandButton  id="btInserir"  value="Inserir"action="#{infoBean.executeInserir}" reRender="retorno", [b]onclick="showPanel()"[/b] />


     [b] Até aqui, tudo funciona perfeitamente, mas como faço para que o botão inserir exiba o <rich:panel  apenas se a inserção ocorrer com sucesso?[/b]

  Obrigada.

2 Respostas

C

Consegui chegar a uma solução. Não sei se foi a melhor mas está ai para quem precisar.

Na classe infoBean, crie a variavel evento do tipo String:

[color=blue] private String evento;

public String getEvento() {...}

  public void setEvento(String evento) {...}[/color]

Método executeInserir:

[color=blue]

public String executeInserir() {

if (inserir(dados)) {

 this.evento = “showPanel()”;

return “sucesso”;

}else {

 this.evento = “”;

return  “erro”;

}
}[/color]

Botão inserir:

<rich:panel id=“pnTeste” > … </rich:panel>

<rich:effect name=“hidePanel” for=“pnTeste” type=“Fade” />
<rich:effect name=“showPanel” for=“pnTeste” type=“Appear”/>

[color=blue]<a4j:commandButton id=“btInserir” value=“Inserir"action=”#{infoBean.executeInserir}" reRender=“retorno”, oncomplete="#{infoBean.evento}" />[/color]

Dessa maneira, o botão inserir, chama o evento “showPanel” que exibe o componente “pnTeste” apenas quando a inserção for realizada com sucesso, caso contrario nada acontece.

Jacomete

tentei fazer dessa forma e naum funcionou, para funcionar no onload da pagina tive que fazer assim:

<rich:effect name=“hidePanel” for=“window” targetId=“pnTeste” event=“onload” type=“Fade” params=“duration:0.0” />

mas o que naum consigo fazer funcionar e a chamada do efeito no oncomplete do a4j:commandButton

olha meu exemplo, e ve se vc pode me ajudar

<rich:panel id=“pnTeste” >
<h:outputFormat value="#{usuarioController.mensagem}"/>
</rich:panel>

<rich:effect name=“hidePanel” for=“window” targetId=“pnTeste” event=“onload” type=“Fade” params=“duration:1.0” />
<rich:effect name=“showPanel” for=“pnTeste” targetId=“pnTeste” type=“Appear”/>

<a4j:commandButton action="#{usuarioController.salvar}" 
                       label="Salvar" 
                       value="Salvar" 
                       rendered="#{usuarioController.operacao!='CONSULTAR'}"
                       reRender="formUsuario"
                       oncomplete="showPanel()">
Criado 4 de junho de 2010
Ultima resposta 9 de dez. de 2010
Respostas 2
Participantes 2