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.
Dúvida RichFaces - Preciso efetuar uma ação do <rich:effect após uma condição
2 Respostas
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.
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()">