Boa tarde. Sou novo no fórum e no html.
Em uma tela tenho 3 botões que precisam de confirmações diferentes.
O problema é que eles estão abrindo o mesmo confirmdialog… A mensagem muda, mas os 3 abrem os botões “Yes3” e “No3”. Queria cada um abrindo o seu, respectivamente. Alguém pode ajudar?
Segue código… ainda não finalizado
…
<h:form>
<p:commandButton style=“font-size:92%;” value=“Reestimar” onclick=“confirmareestima.show()”
icon=“ui-icon-circle-plus” actionListener="#{managerBean.localizareqopavanc}" ajax=“true” >
<p:confirm header=“Confirmação” message=“Reestimar?” icon=“ui-icon-alert” />
</p:commandButton>
<p:commandButton style="font-size:92%;" value="Encerrar" onclick="confirmaencerra.show()"
icon="ui-icon-circle-close" actionListener="#{managerBean.localizareqopavanc}" ajax="true" >
<p:confirm header="Confirmação" message="Encerrar?" icon="ui-icon-alert" />
</p:commandButton>
<p:commandButton style="font-size:92%;" value="Reabrir" onclick="confirmareabrir.show()"
icon="ui-icon-circle-arrow-s" actionListener="#{managerBean.localizareqopavanc}" ajax="true" >
<p:confirm header="Confirmação" message="Reabrir?" icon="ui-icon-alert" />
</p:commandButton>
<p:confirmDialog global="true" showEffect="fade" hideEffect="explode" severity="alert" widgetVar="confirmareestima" appendToBody="true">
<p:commandButton value="Yes1" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="No1" type="button" styleClass="ui-confirmdialog-no" onclick="confirmareestima.hide()" icon="ui-icon-close" />
</p:confirmDialog>
<p:confirmDialog global="true" showEffect="fade" hideEffect="explode" severity="alert" widgetVar="confirmaencerra" appendToBody="true">
<p:commandButton value="Yes2" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="No2" type="button" styleClass="ui-confirmdialog-no" onclick="confirmaencerra.hide()" icon="ui-icon-close" />
</p:confirmDialog>
<p:confirmDialog global="true" showEffect="fade" hideEffect="explode" severity="alert" widgetVar="confirmareabrir" appendToBody="true">
<p:commandButton value="Yes3" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="No3" type="button" styleClass="ui-confirmdialog-no" onclick="confirmareabrir.hide()" icon="ui-icon-close" />
</p:confirmDialog>
</h:form>
Mike
Dezembro 5, 2019, 2:15pm
#2
Olá @antoniobraga , tudo certo?
O component <p:confirm />
abre o ultimo <p:confirmDialog
setado com global="true"
.
Como você tem vários confirmDialog, é melhor você abrir eles através de onclick, onsuccess ou oncomplete.
Ex:
onclick="PF('confirmareestima').show();
Se a sua versão do PrimeFaces for inferior a 4.0, você não tem que utilizar a função PF, do contrário, tem.
Essa é a ordem de execução das actions e eventos js:
onclick
actionListener
action
onsuccess
update
oncomplete
Obs: Se quiser, você pode remover o ajax="true"
dos seus <p:commandButton
, pois por padrão eles já são ajax="true"
Oi Mike… funcionou perfeitamente!
Bastou retirar o “p:confirm” e acertar os “onclicks”.
Muito Obrigado pela ajuda! Abraços!
Mike,
Funcionou mas eu parei logo em frente pois os botões do ‘Sim’ não estão chamando o Bean!
<h:form>
<p:commandButton style=“font-size:92%;” value=“Reestimar” onclick=“PF(‘confirmareestima’).show();”
icon=“ui-icon-circle-plus”> </p:commandButton>
<p:commandButton style=“font-size:92%;” value=“Encerrar” onclick=“PF(‘confirmaencerra’).show();”
icon=“ui-icon-circle-close”></p:commandButton>
<p:commandButton style=“font-size:92%;” value=“Reabrir” onclick=“PF(‘confirmareabrir’).show();”
icon=“ui-icon-circle-arrow-s”></p:commandButton>
</h:form>
<p:confirmDialog header="Confirmação" message="Reestimar?" showEffect="fade" hideEffect="explode" severity="alert" widgetVar="confirmareestima" appendToBody="true">
<h:form>
<p:commandButton value="Sim" action="#{managerBean.validabtn()}" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" oncomplete="PF('confirmareestima').hide();"/>
<p:commandButton value="Não" onclick="PF('confirmareestima').hide();" icon="ui-icon-close" />
</h:form>
</p:confirmDialog>
<p:confirmDialog header="Confirmação" message="Encerrar Requisição?" showEffect="fade" hideEffect="explode" severity="alert" widgetVar="confirmaencerra" appendToBody="true">
<h:form>
<p:commandButton value="Sim" action="#{managerBean.validabtn2()}" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" oncomplete="PF('confirmaencerra').hide();"/>
<p:commandButton value="Não" onclick="PF('confirmaencerra').hide();" icon="ui-icon-close" />
</h:form>
</p:confirmDialog>
<p:confirmDialog header="Confirmação" message="Reabrir Requisição?" showEffect="fade" hideEffect="explode" severity="alert" widgetVar="confirmareabrir" appendToBody="true">
<h:form>
<p:commandButton value="Sim" action="#{managerBean.validabtn3()}" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" oncomplete="PF('confirmareabrir').hide();"/>
<p:commandButton value="Não" onclick="PF('confirmareabrir').hide();" icon="ui-icon-close" />
</h:form>
</p:confirmDialog>
</h:form>
No bean só tenho (ainda falta implementar):
public void validabtn() {
System.out.println(“Valida numero 1”);
}
public void validabtn2() {
System.out.println("Valida numero 2");
}
public void validabtn3() {
System.out.println("Valida numero 3");
}
Mike
Dezembro 5, 2019, 5:43pm
#5
Você esta com dois forms, um dentro do outro.
Coloca os <p:confirmDialog
fora do form principal
Depois dessa alteração ve o que acontece e posta como ficou o código caso não funcione ainda
Era isso Mike… Tirei de dentro do form e funcionou corretamente!
Obrigado mais uma vez!!!