Commandlink: Executar Action antes do Java Script

Boa dia pessoal.

Gostaria de saber como fazer pra executar uma action que esta em commandlink antes do javascript.

O meu código é o seguinte:

<a4j:commandLink id="commandEditar" action="#{cadastroUsuarioBB.editarServico}" oncomplete="abrir();"> <h:graphicImage id="imgEdit" url="/img/editar.png" alt="Editar Serviço" style="border:none;"/> </a4j:commandLink>

O problema é que o javascript “abrir()” acontece antes do action “editarServico”…

Tem um tópico neste forum sobre isso, mas so diz pra usar “oncomplete”.
Estou usando, mas não funcionou (ou estou usando de maneira errada).

Alguem pode me ajudar?

tentou sem os parenteses

oncomplete=“abrir;”

Obrigado pela ajuda amigo, mas sem os parenteses a funcao “abrir()” nao eh chamada.

Tente usar o recurso a4j:jsFunction, mas mesmo assim, acho que poderá provocar o mesmo efeito.

De qualquer forma, se não funcionar, uma outra maneira com essa jsFunction poderá funcionar, colocando uma flag (boolean) como condicional. chegando ao final do seu método de serviço, essa boolean ficaria como true, então você só iria renderizar a chamada do JS quando ela fosse true. É uma tentativa…

Ae galera valeu pela ajuda!!

Vi que outras dúvidas semelhantes pela internet foram resolvidas com o “oncomplete”.
Pesquisei mais um pouco (pois sou iniciante em jsf, richfaces, ajax4jsf) e usei o “oncomplete” juntamente com o “reRender” da tab “a4j:commandlink”:

<a4j:commandLink id="commandEditar" action="#{cadastroUsuarioBB.editarServico}" oncomplete="abrir()" reRender="popupPanel"> <h:graphicImage id="imgEdit" url="/img/editar.png" alt="Editar Serviço" style="border:none;"/> </a4j:commandLink>

Na verdade o “oncomplete” estava beleza, mas eu precisava renderizar novamente o meu “popupPanel”. :-o

Valeu galera!