Olás,
Estou abrindo um dialog para cadastro de um objeto. Após salvar o objeto gostaria que o dialog continuasse aberto. Tentei da seguinte forma, adicionando oncomplete=“dlg_cadastro_subtema.show();” no commandButton, mas não deu certo.
<p:commandButton id="btn_salvar" type="submit" action="#{subtemaBean.salvar}" value="#{msg.botao_salvar}" oncomplete="dlg_cadastro_subtema.show();" ajax="false" />
Alguém poderia me ajudar?
Apenas para constar uso JSF 2 e Primefaces 3.
Abçs 
Você pode fazer com requisição ajax. Você encontra alguns exemplos do próprio primefaces fazendo com ajax.
Com esse código você está fazendo o seguinte
clica em salvar.
salva.
abre o dialog quando termina de salvar
porém como ajax está false, ele recarrega a página, então você não ve o dialog
oncomplete="dlg_cadastro_subtema.show();" ajax="false"
você pode colocar no seu método o retorno pra abrir o dialog… por exemplo:
public String salvar(){
//codigo
//obs.: nunca testei... tente colocar ; no final do"....show();"
return "dlg_cadastro_subtema.show()";
}
Aproveitando o tópico sobre p:dialog…
eu tenho uma sitação onde eu tenho um menubar que os itens abre dialog, sem carregar a página…
existe alguma forma de fazer com que o primefaces abra o dialog em lugares aleatórios e que estão vazio?
por exemplo… eu tenho alguns menus que se eu abrir ao mesmo tempo ele abre um dialog em cima do outro.
Cara, já pensou em tirar o oncomplete ? Se vc não ira fechar ele depois da ação, não vejo necessidade de te-lo …
Esse problema do menubar ocorre comigo também, mas nunca consegui arrumar. O que eu achei foi deixar o diálogos de cadastro e alteração modal, assim fica melhor.
Tenta assim…
No início do seu xhtml, adicione:
<script type="text/javascript">
function fecha(xhr, status, args){
if(args.fechar == true) {
dlg_cadastro_subtema.hide();
}
}
</script>
Na hora de salvar, no bean, adicione:
requestContext = RequestContext.getCurrentInstance();
requestContext.addCallbackParam("fechar", false);
No oncomplete do seu <p:commandButton> adicione:
oncomplete="fecha(xhr, status, args);"
Quando quiser fechar é só adicionar:
requestContext.addCallbackParam("fechar", true);
Tem como fazer com que um dialog não fique na frente do outro?
Aqui tem um exemplo de como manter uma dialog aberta com uma resposta vinda do MB. http://www.primefaces.org/showcase/ui/dialogLogin.jsf
Vc coloca um javascript bobo e pronto. [=
[quote=alandiniz]Com esse código você está fazendo o seguinte
clica em salvar.
salva.
abre o dialog quando termina de salvar
porém como ajax está false, ele recarrega a página, então você não ve o dialog
oncomplete="dlg_cadastro_subtema.show();" ajax="false"
você pode colocar no seu método o retorno pra abrir o dialog… por exemplo:
public String salvar(){
//codigo
//obs.: nunca testei... tente colocar ; no final do"....show();"
return "dlg_cadastro_subtema.show()";
}
Aproveitando o tópico sobre p:dialog…
eu tenho uma sitação onde eu tenho um menubar que os itens abre dialog, sem carregar a página…
existe alguma forma de fazer com que o primefaces abra o dialog em lugares aleatórios e que estão vazio?
por exemplo… eu tenho alguns menus que se eu abrir ao mesmo tempo ele abre um dialog em cima do outro.
[/quote]
Desenterrando
Rapaz essa segunda solução utilizando o return iria dar certinho aqui, mas que pena que não deu certo.