Exibir rich:ModalPanel condicionalmente atraves de variavel setada no managed bean [RESOLVIDO]

6 respostas
thiagocg

Olá pessoal, to me debatendo aqui e não to conseguindo achar uma solução para meu problema.
O meu cenario é o seguinte: Tenho uma rich:dataTable e nela as rich:Columns, tenho um rich:Column que possui um commandLink para efetuar a exclusão do registro:

<rich:column style="text-align:center;" width="90px" sortBy="#{fornecedor.razaoSocial}">
	<f:facet name="header">
	        <h:outputText value="Excluir?" />
        </f:facet>
        <a4j:commandLink id="excluir" actionListener="#{fornecedorMB.getExcluir}" reRender="tblListaFornecedor" oncomplete="#{rich:component('modalExclusao')}.show();" >
              	<h:graphicImage  value="/gfx/remove.png" style="border: none;"/>
               	<f:param id="objetoExcluir" name="exclusao" value="#{fornecedor}"></f:param>
	</a4j:commandLink>	   	                        		                   
</rich:column>

quando clico nesse commandLink ele vai até meu managed bean, verifico se o registro pode ser excluído e se for permitido, efetuo a exclusão, caso contrario seto uma varialvel boolean no meu managed bean que será responsavel por renderizar ou não o meu modal panel que segue abaixo:

<rich:modalPanel id="modalExclusao" autosized="true" width="300" height="100" rendered="#{fornecedorMB.exibirAlertaExclusao}" >
	<f:facet name="header">
	          <h:panelGroup>
	               	<h:outputText value="Alerta de Exclusão"></h:outputText>
	           </h:panelGroup>
	 </f:facet>
	       				
	 <f:facet name="controls">
		<h:panelGroup>
			<h:graphicImage value="/gfx/remove.png" style="border: none;" id="hidelink" />
			<rich:componentControl for="modalExclusao" attachTo="hidelink" operation="hide" event="onclick" />
		</h:panelGroup>
	</f:facet>
				      				      	
	<h:outputText value="O registro não pode ser excluído!" />
</rich:modalPanel>

este modal panel é so para informar o usuario que o registro não pode ser excluido, caso o registro seja excluido esse modal nem deve aparecer para o usuário.

O problema é q parece que ele não ta aceitando essa variavel no rendered do modal panel.

Alguem ja passou por isso e poderia me dar uma ajuda?
Qualquer ajuda é bem vinda.
Grato a todos!

[]'s

6 Respostas

foxpv

Mas… ta dando algum erro? essa exibirAlertaExclusao é um boolean correto? O que está acontecendo efetivamente?

thiagocg

Olá foxpv, obrigado pela resposta, o problema é que está sempre sendo renderizado o modal panel. A logica no managed bean esta correta, esta mudando o valor da variavel até dou o “sysout” no console e ta exibindo certinho o valor da variavel, mas indiferente de ser true ou false, ele exibe o modal.

H

Olá.
Você pode fazer assim.
No seu managedBean colocar um atributo String.
Ex:

private String acao

No seu commandLink onde chama o actionListner colaca assim.
Ex:

oncomplete="#{fornecedorMB.acao}"

E no método onde você verifica se o registro pode ser exlcuído coloca assim.
Ex:

if(podeExcluir){
            acao = "rich:component('modalExclusao')}.show();";
       }else{
            acao = null;
       }

Espero ter ajudado.

thiagocg

Olá henriquejhc, obrigado pela resposta, tentei do jeito q vc passou, e com diversas variações e mesmo assim não exibe o modal, agora simplesmente não exibe nunca. Sera q eu to errando a sintaxe da chamada direto pela string acao?

Linha do metodo no managed Bean que seta o valor da string acao:

this.acao = "{rich:component('modalExclusao')}.show();";

commandLink que executa o metodo no managed bean:

<a4j:commandLink id="excluir" actionListener="#{fornecedorMB.getExcluir}" reRender="tblListaFornecedor" oncomplete="#{fornecedorMB.acao}" > <h:graphicImage value="/gfx/remove.png" style="border: none;"/> <f:param id="objetoExcluir" name="exclusao" value="#{fornecedor}"></f:param> </a4j:commandLink>

ahh meu managed bean é de sessão e o meu modal panel esta fora do <h:form> mas eu tb ja tentei colocar ele dentro e tb não deu certo!

[]'s

H

Tenta assim:

this.acao = "Richfaces.showModalPanel('modalExclusao')";
thiagocg

Graaaaaaaaaaaaaande henriquejhc, muito obrigado pela ajuda, da ultima forma q vc passou funcionou perfeitamente!

Valeu mesmo! :smiley:

[]'s

Criado 9 de fevereiro de 2010
Ultima resposta 9 de fev. de 2010
Respostas 6
Participantes 3