Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Mensagem de validação é exibida no modal e na tela de trás

Bom dia galera, não estou conseguindo resolver a seguinte situação.

  • Tenho uma tela que abre um modal.
  • No modal tenho um textarea que é de preenchimento obrigatório.
  • Ao clicar no botão FINALIZAR, a mensagem de preenchimento obrigatório é exibida no modal, mas também no <p:message que fica na tela de trás, mesmo eu colocando um id e mandar renderizar somente ele. Com o código e o print ficará claro o que estou dizendo.

Desde já agradeço

imagem da tela: https://snag.gy/rFjyRB.jpg

Tela que chama o modal

<?xml version="1.0" encoding="ISO-8859-1"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
...
<h:form ...
<!--  Mensagem da tela que chama o modal-->
<p:messages id="messages" closable="true" autoUpdate="true"/>
...
<componente:perguntas bean="#{mb}" widget="dialogPerguntas" renderPanelPerguntas="true"/>
</h:form>
...

Modal - perguntas.xhtml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h = "http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:composite = "http://java.sun.com/jsf/composite">

    <composite:interface>
        <composite:attribute name="bean" />
        <composite:attribute name="widget"/>
        <composite:attribute name="renderPanelPerguntas" type="java.lang.Boolean"/>        
    </composite:interface>

    <composite:implementation>
        <p:dialog id="dialogPerguntas" position="center" modal="true"  widgetVar="#{cc.attrs.widget}" resizable="false" closable="false" width="578">
                    <h:panelGrid id="gridPerguntas">

                    <!--  Mensagem que é pra exibir somente no  modal-->
                    <p:message for="just" id="mensagemTextArea"/>
                             ...
                       <h:panelGroup rendered="#{cc.attrs.bean.dialogPerguntasParaOCidadao.mudouACaracteristicaFisica || cc.attrs.bean.dialogPerguntasParaOCidadao.assinaturaMudou}">
                           <h:outputLabel value="Justificativa:"/><br />    
                           <p:inputTextarea id="just" cols="74" rows="2" autoResize="false" maxlength="254" value="#{bean.dialogPerguntas.justificativa}" label="Justificativa" style="margin-top: 5px;" required="true" requiredMessage="Justificativa não preenchida">                           
                           </p:inputTextarea>
                       </h:panelGroup>

                        <!-- Botão FINALIZAR - ao clicar, deveria exibir mensagem apenas no modal, pois o botão está dando update="mensagemTextArea" -->
                       <div style="width: 120px; margin: auto !important; padding: 6px;">
                          <p:commandButton id="btnFinalizar" value="Finalizar" action="#{bean.fazAlgumaCoisaBean}" style="margin-left: 225px;"  update="mensagemTextArea"/>
                       </div>
                    </h:panelGrid>
         </p:dialog>
    </composite:implementation>
2 respostas

Oi Marcio,

Desculpe a demora mas parece que não conseguimos responder a sua duvida.

De qq forma, vc mesmo conseguiu resolver?

abs, Nico

Oi Nico, usando o componente <p:messages do primefaces não consegui resolver, pois a mensagem é exibida no modal e na tela de trás, estou tentando ver se faço com javascript, porém, conheço bem pouco sobre javascript e estou apanhando.