GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

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

java
jsf
Tags: #<Tag:0x00007fb3a0009208> #<Tag:0x00007fb3a0009078>

#1

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?


#2

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


#3

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


#4

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


#5

Olá Diego,
Só JSF, bootstrap, javascript


#6

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

#7

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


#8

Diego, obrigado!
Vou testar aqui!


#9

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!


#10

Puts, verdade.


#11

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!


#12

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