[Resolvido] Primefaces - Action em um confirmDialog

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 :

[code]<h:form>
<p:tabView>
<p:tab title=“Tab1”>


</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>[/code]

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

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

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!

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

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.

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.

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 !