Java - Abrir uma modal através do bean (RESOLVIDO)

11 respostas
jsfjava
SergioSaraiva

Boa tarde pessoal,
Estou desenvolvendo uma tela de cadastro.
Conforme uma condição, terei que abrir uma modal na tela (essa condição é validada no bean).

Ou seja, não vou clicar em nenhum botão, essa modal deve ser aberta conforme a condição.

Observação: Aqui não utilizamos o primefaces.

Alguém sabe se é possível?
Tem algum exemplo?

11 Respostas

Diego_Emmanuell

O que você está usando de interface? primefaces?

Diego_Emmanuell

Bom , explicando… O primefaces utiliza js para abrir modal… e o JSF 2 permite que você chame funções js a partir da bean, se for o seu caso, segue exemplo:

if(validaAquiASuaCondicao){

abreModal(idModal);

}
public static void abreModal(String idModal) {

RequestContext context = RequestContext.getCurrentInstance();

context.execute(PF(’” + idModal + “’).show();”);

}
Diego_Emmanuell

Vi agora que você não usa primefaces. O que utiliza?

SergioSaraiva

Olá Diego,
Só JSF, bootstrap, javascript

Diego_Emmanuell

Cara, acredito que vai na mesma linha, já que o JSF executa um JS a partir da bean, você conseguiria chamar a função de abrir o modal do bootstrap…

public static void abreModal(String idModal) {
	
             RequestContext context = RequestContext.getCurrentInstance();
	
	          context.execute("$('#" + idModal + "').modal('show');");
	
}
Diego_Emmanuell

Não tenho o ambiente para testar, mas acredito que seria algo nesse modelo.

SergioSaraiva

Diego, obrigado!
Vou testar aqui!

SergioSaraiva

Bom dia Diego, pelo que pude ver aqui, essa classe RequestContext é ligado ao Primefaces, que no meu caso, não é utilizado aqui na empresa.

Obrigado pela força!

Diego_Emmanuell

Puts, verdade.

SergioSaraiva

Consegui encontrar uma solução sem utilizar primefaces:

1 - Criei um arquivo javascript, no qual já deixo a modal ativada.

$ = jQuery;

$(document).ready(function() {

$(’#myModal’).modal(‘show’);

});

2 - Em seguida, na página xhtml, criei um panelGroup

<h:panelGroup id=“modal” rendered="#{franquiaBean.certificadoFoiEmitido == true}">
a modal esta aqui dentro
</h:panelGroup>

Observação: Através do rendered, eu consigo habilitar/desabilitar o panelGroup.
Ou seja, no meu bean faço uma validação e o campo certificadoFoiEmitido pode receber true ou false.
Se verdadeiro (true), o panelGroup será habilitado e assim a modal aparece!

Não sei se isso é o mais certo, mas funcionou!

Diego, muito obrigado pela atenção!
Abraço!

Diego_Emmanuell

Valeu, cara. O importante é que quebrou o galho e tá funcionando.

Criado 27 de novembro de 2018
Ultima resposta 29 de nov. de 2018
Respostas 11
Participantes 2