[Resolvido] Primefaces - Action em um confirmDialog

7 respostas
E

Olá pessoal.

Estou com um problema muito estranho. Tenho alguns confirmDialog para confirmar exclusão. Problema que o primeiro nunca executa a action. Então criei um confirmDialog fantasma só para testar e agora todos action são chamados corretamente. Tentei os dialog dentro das tab ocorre o mesmo problema. Alguém tem alguma ideia do porque disso ?

Tenho a seguinte estrutura :

<h:form>
<p:tabView>
   <p:tab title="Tab1">
    ...
    </tab>
</p:tabView>

            <p:confirmDialog message="fantasma"
                             widgetVar="fantasma">
                
                    <h:form>
                    </h:form>
               
            </p:confirmDialog>

            <p:confirmDialog message="Deseja realmente excluir?"
                             header="Excluir Palavra"
                             severity="alert"
                             closable="false"
                             modal="true"
                             widgetVar="cdRemovePalavra">
                <p:outputPanel>
                    <h:form>
                        <p:commandButton action="#{cadastroPessoasMB.deletaPalavra}"
                                         update="cadGeral:lista_palavras cadGeral:lista_palavras, msgCadastro"
                                         value="Sim"
                                         process="@this"
                                         oncomplete="cdRemovePalavra.hide()">
                        </p:commandButton>
                        <p:commandButton value="Não" oncomplete="cdRemovePalavra.hide()"/>
                    </h:form>
                </p:outputPanel>
            </p:confirmDialog>

</h:form>

7 Respostas

F

Tente colocar o confirmDialog dentro do form e não somente os CommandButton

E

Nada mudou. Recomendaram evitar forms aninhados. Vou ver se consigo adaptar isso ao meu arquivo pois tem 5 cadastros na tabview.
Valeu.

F

Não utlize form aninhado mesmo, faca da seguinte form

<h:form id="formprincipal">
                       */ Aqui dentro voce cria seu form principal*/
   </h:form>
<h:form id="dlg">
                        <p:confirmDialog  message="Deseja realmente excluir este registo?" hideEffect="explode" header="Aviso" severity="alert" widgetVar="confirmation">
                            <p:commandButton id="btnSim" value="Sim" oncomplete="confirmation.hide()" action="#{transportadorBean.excluir}" process="@form" update="formprincipal "/>
                            <p:commandButton id="btnNao" value="Não" onclick="confirmation.hide()" type="button"/>
                        </p:confirmDialog>
   </h:form>

Um form fora do outro e não aninhado!

E

Exato. Coloquei todos dialog e confirmDialog fora do form principal e funcionou. Form aninhado aumenta o risco de ocorrer problemas. Fica a dica.

F

Agora funcionou corretamente então??
Vc esta correto, quando comecei com jsf por não saber muita coisa tive alguns problemas com forms aninhado, a chance de erro é muito grande.

E

Funcionou. Form aninhado parece só a disposição dos elementos diferente, mas na real influencia bastante. Inclusive pesquisando agora vi que até os desenvolvedores do prime indicam o não uso de forms aninhados.
Valeu pela ajuda.

M

Você pode postar como ficou o seu ???

Pq o meu ta pegando sempre o primeiro da lista !!

Eu clico no ultimo , ele exclui o primeiro !
Eu clico no do meio, ele exclui o primeiro !

Criado 9 de março de 2011
Ultima resposta 24 de jun. de 2013
Respostas 7
Participantes 3