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

11 respostas
jsfjava
S

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

D

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

D

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();”);

}
D

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

S

Olá Diego,
Só JSF, bootstrap, javascript

D

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');");
	
}
D

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

S

Diego, obrigado!
Vou testar aqui!

S

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!

D

Puts, verdade.

S

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!

D

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