É possivel invocar um confirmDialog através de um managedBean?

5 respostas Resolvido
jqueryjsfjava
F

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?

5 Respostas

M
Solucao aceita

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();");
F

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();
	}	
		
}
M

muda para ajax=true e usa actionListener ao invés de action

Você esta abrindo outro dialog no botão?

F

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?

M

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>
Criado 13 de março de 2019
Ultima resposta 13 de mar. de 2019
Respostas 5
Participantes 2