P:commandButton abrindo dois dialog ao mesmo tempo

17 respostas
J

Pessoal,

Não sei porque o meu p:commandButton está abrindo dois dialogs ao mesmo tmepo, não quero que isso aconteça.

<p:commandButton image="ui-icon-pencil" action="#{produtoController.prepararParaEditarEVisualizar}"  oncomplete="manterProdutoDialog.show()"
 update=":formManterProduto">
          <f:setPropertyActionListener 
                    value="#{produto}" target="#{produtoController.produtoSelecionado}" />
</p:commandButton>                                                                                                                                                       

<p:commandButton image="ui-icon-search" action="#{produtoController.prepararParaEditarEVisualizar}" oncomplete="detalhesProdutoDialog.show()"                                          update=":formDetalhesProduto">
          <f:setPropertyActionListener value="#{produto}" target="#{produtoController.produtoSelecionado}" />
</p:commandButton>    


 <p:dialog header="Gerenciar produto" widgetVar="manterProdutoDialog" 
                      minWidth="480" minHeight="200" resizable="true" closable="true"                       
                      showEffect="slide" hideEffect="slide"></p:dialog>
 <p:dialog header="Detalhes do produto" widgetVar="detalhesProdutoDialog" 
                      minWidth="200" minHeight="100" resizable="true" closable="true"                       
                      showEffect="slide" hideEffect="slide"> </p:dialog>

MB:

public void prepararParaEditarEVisualizar() throws IllegalAccessException, InvocationTargetException {
        BeanUtils.copyProperties(this.produto, this.produtoSelecionado);
    }

17 Respostas

K

qual dos dois commandButton está fazendo isso?
ou é os dois?

J

Está acontecendo mais no primeiro botão:

<p:commandButton image="ui-icon-pencil" action="#{produtoController.prepararParaEditarEVisualizar}" oncomplete="manterProdutoDialog.show()" update=":formManterProduto"> <f:setPropertyActionListener value="#{produto}" target="#{produtoController.produtoSelecionado}" /> </p:commandButton>

J

Já fiz várias mudanças no meu código, já pesquisei no Google e não consegui resolver esse problema ainda.
Aparentemente, está tudo certo, mas ele continua abrindo dois dialogs.

K

JeffersonJCosta:
Já fiz várias mudanças no meu código, já pesquisei no Google e não consegui resolver esse problema ainda.
Aparentemente, está tudo certo, mas ele continua abrindo dois dialogs.

não sei o que te dizer, pq ao meu ver está tudo correto.
uma pergunta, o icone está aparecendo?
eu uso o nome do icone no icon="…algum icone…" e não no image

J

Pois é. Não estou achando onde está o problema também, muito estranho.

O icone aparece sim. Vou tentar altera isso, vai saber né?

J

Troquei a propriedade image por icon, só para testar mesmo, e continua tudo igual.

Não sei onde está o erro…

R

Uma pergunta:

  1. update=":formManterProduto", por acaso existe um form dentro do outro na sua pagina ?
J

Não os form estão todos separados e identicados. Também já verifiquei isso, várias vezes, por isso estou achando estranho.
Quer o código da página toda? - é muita grande.

R

cara, pode ser, entao posta no pastebin, melhor , e passa o link =D

J

Segue o link para o código completo da página onde está acontecendo o problema:

http://pastebin.com/KdbTAz5Y

J

Pessoal,

Já refiz toda a minha página, do zero, e o problema continua.

Alguem desconfia o que pode ser?

K

apaga tudo e refaz, as vezes é a melhor coisa a fazer qndo não se tem explicação. :?

J

Pois é, já fiz isso e continua acontecendo a mesma coisa.
Por isso, voltei a postar aqui, já tentei de tudo.

J

Isso só acontece a primeira vez que eu clico no commandButton, depois não acontece mais.

R

Mano, faz um teste, poe todos os seus p:dialog, dentro de tags h:form, nao precisa ser todos no mesmo h:form.

J

Acabei de fazer isso e nao mudou.

J

Descobri onde está o erro, mas não sei como consertar.

Seguinte, dentro do meu dataTable, eu tenho um evento ajax, que é acionado quando o usuário clica na linha da tabela, esse evento é que está abrindo as duas janelas ao mesmo tempo, acabei de retirá-lo do código e o problema parou.

<p:ajax event="rowSelect" update=":formDetalhesProduto"                                                       
                            listener="#{produtoController.prepararParaEditarEVisualizar}"
                            oncomplete="detalhesProdutoDialog.show()"/>

A pergunta é: como manter esse evento, mas sem o problema de abrir o detalhesProdutoDialog, quando eu clicar no commandButton de editar o produto?
Era para abrir o detalhesProdutoDialog apensa quando eu clicasse na linha ou no botão especifico par aisso e não quando eu clico no botão.

Criado 6 de fevereiro de 2013
Ultima resposta 8 de fev. de 2013
Respostas 17
Participantes 3