Utilizar dois modalPanel através de uma condição com <c:if test

1 resposta
Kleber-rr

Olá pessoal, bom dia.

Mais uma vez venho trazer uma dúvida para compartilhar com os colegas de GUJ.

Estou tentando utilizar 2 modalPanel em uma pagina XHTML, onde apenas uma delas irá funcionar a depender da satisfação de uma condição em um a4j:commandButton, conforme o demonstrado abaixo:
&lt;rich:modalPanel id="panelOK" width="350" height="100"&gt;
        &lt;f:facet name="header"&gt;
            &lt;h:panelGroup&gt;
                &lt;h:outputText value="Inclusão de Pessoa Física"&gt;&lt;/h:outputText&gt;
            &lt;/h:panelGroup&gt;
        &lt;/f:facet&gt;
        &lt;f:facet name="controls"&gt;
            &lt;h:panelGroup&gt;
                &lt;h:graphicImage value="/images/icons/close.png" styleClass="hidelink" id="hidelink1"/&gt;
                &lt;rich:componentControl for="panelOK" attachTo="hidelink1" operation="hide" event="onclick"/&gt;
            &lt;/h:panelGroup&gt;
        &lt;/f:facet&gt;
        &lt;h:outputText value="Operação realizada com sucesso!"&gt;&lt;/h:outputText&gt;
        <br/>
        &lt;h:outputText value="Clique no (X) para fechar essa janela."&gt;&lt;/h:outputText&gt;
    &lt;/rich:modalPanel&gt;
    
    
    
    &lt;rich:modalPanel id="panelERRO" width="350" height="100"&gt;
        &lt;f:facet name="header"&gt;
            &lt;h:panelGroup&gt;
                &lt;h:outputText value="Inclusão de Pessoa Física"&gt;&lt;/h:outputText&gt;
            &lt;/h:panelGroup&gt;
        &lt;/f:facet&gt;
        &lt;f:facet name="controls"&gt;
            &lt;h:panelGroup&gt;
                &lt;h:graphicImage value="/images/icons/close.png" styleClass="hidelink" id="hidelink2"/&gt;
                &lt;rich:componentControl for="panelERRO" attachTo="hidelink2" operation="hide" event="onclick"/&gt;
            &lt;/h:panelGroup&gt;
        &lt;/f:facet&gt;
        &lt;h:outputText value="Erro ao incluir Registro!"&gt;&lt;/h:outputText&gt;
        <br/>
        &lt;h:outputText value="Registro  existe!"&gt;&lt;/h:outputText&gt;
        <br/>
        &lt;h:outputText value="Clique no (X) para fechar essa janela e selecionar outra Pessoa Física/Órgão Gestor."&gt;&lt;/h:outputText&gt;
    &lt;/rich:modalPanel&gt;
//...
            &lt;a4j:commandButton value="Adicionar" actionListener="#{pfogHandler.incluir}" id="link"&gt;
            &lt;c:if test="${pfogHandler.statusOK == true}"&gt;
                &lt;rich:componentControl for="panelOK" attachTo="link" operation="show" event="onclick"/&gt;
            &lt;/c:if&gt;
            
            &lt;c:if test="${pfogHandler.statusERRO == true}"&gt;
                &lt;rich:componentControl for="panelERRO" attachTo="link" operation="show" event="onclick"/&gt;
            &lt;/c:if&gt;
                &lt;/a4j:commandButton&gt;
            &lt;f:param id="includeCod" name="cod_funcionario" value="#{f.cod_funcionario}"/&gt;

O problema é que, mesmo a condição seja satisfeita individualmente, e funcionando perfeitamente, a página não carrega o modalPanel.
Será que existe algum problema em utilizar 2 modalPanel através de uma condição exposta por um c:if test???

Agradeço a ajuda dos colegas.

1 Resposta

R

Rapaz, eu não aprovo muito o uso de c:if, vale mais a pena a propriedade rendered dos componentes, mas…

Se o acesso ao modal for com a4j:commandButton vc tem que dar um reRender no rich:modalPanel para que ele apareça.

Pra abrir o modal dependeno da condição, use a propriedade showWhenRendered do rich:modalPanel, e com isso, quando vc dar um reRender ele vai verificar a condição boolean colocada na propriedade e vai exibir o modal correto.

Criado 28 de outubro de 2010
Ultima resposta 29 de out. de 2010
Respostas 1
Participantes 2