Amigos, estou com seguinte problema:
Eu preciso criar um botãoX, quando o usuario clicar nele, eu preciso entrar o managedBean associado a ele e executar uma validação, se ter certo, eu sigo o fluxo normalmente, caso a validação dê errado, ou seja, retorne falso, eu preciso mostrar para o usuario um ConfirmDialog ai se o usuario clicar em sim, eu continuo o fluxo normalmente.
Há como invocar um confirmDialog através de um managedBean?
Mike
Março 13, 2019, 2:29pm
#2
Da sim, esta usando PrimeFaces? Se sim, dependendo da versão você tem diferentes formas de fazer isso
PrimeFaces menor que 4.0
RequestContext context = RequestContext.getCurrentInstance();
context.execute("myDialogVar.show();")
PrimeFaces 4.0 até 6.1
RequestContext context = RequestContext.getCurrentInstance();
context.execute("PF('myDialogVar').show();")
PrimeFaces 6.2 ou superior
PrimeFaces current = PrimeFaces.current();
current.executeScript("PF('myDialogVar').show();");
Amigo, eu tentei o seguinte e não deu certo:
XHTML:
<p:panel>
<h:panelGroup layout="block" style="margin-top: 20px;">
<h:panelGrid cellpadding="2" columns="2" >
<p:commandButton value="acao" onclick="statusDialog.show();" id="cbEnviar" action="#{bean.validate}" ajax="false" icon="ui-icon-disk" />
<p:confirmDialog global="true" widgetVar="confirmDialog1">
<p:commandButton value="Sim" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" onclick="statusDialog.show();" oncomplete="statusDialog.hide();" />
<p:commandButton value="Não" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</h:panelGrid>
</h:panelGroup>
</p:panel>
managedBean primeFaces 4.0
public void validate() {
if(1==1){
RequestContext context = RequestContext.getCurrentInstance();
context.execute("PF('confirmDialog1').show();")
}else{
executaMano();
}
}
Mike
Março 13, 2019, 2:49pm
#4
muda para ajax=true e usa actionListener ao invés de action
Você esta abrindo outro dialog no botão?
Amigo, funcionou perfeitamente, no entanto, ainda falta associar o clique no commandButton sim do confirmDialog a um dos metodos contidos no managedBean. Como faço isso?
Mike
Março 13, 2019, 4:25pm
#6
Do mesmo jeito que você faz normalmente
Basicamente:
<p:confirmDialog widgetVar="meuDialog" ...>
<p:commandButton value="Sim" actionListener="#{bean.meuMetodoVoid}" oncomplete="PF('meuDialog').hide()"/>
</p:confirmDialog>