Primefaces - p:dialog

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 :wink:

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:

&lt;script type="text/javascript"&gt; function fecha(xhr, status, args){ if(args.fechar == true) { dlg_cadastro_subtema.hide(); } } &lt;/script&gt;

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.