Re:Dúvida dois <p:messages> do primefaces

Tem um codigo que voce pode fazer no bean que direciona a mensagem para um ID na sua pagina, so nao lembro qual é, vou verificar aqui.

Faz assim, mostre seu botao ou o que vai fazer mostrar a mensagem por favor ?

Ai ele ta dizendo pra atualizar sempre o messages do form 1, so que m2 é do form2 certo ? entao teste trocando para :form2:m2

Voce pode postar o codigo completo da sua pagina onde se encontram esses 2 elementos ?

Coloque o <p:dialog> dentro do <p:form>

<h:form id="form2">  
<p: messages id="m2" />
<p:dialog widgetVar="dlg3" showEffect="explode" showHeader="false" hideEffect="bounce" height="250" width="500" modal="true" resizable="false"> 


.....


</p:dialog>

<h:form>

tem sim, crie outro p:messages, com id sucesso, e dai ao concluir a operacao voce da um update nele, MAS SE, concluir a operacao. Da pra voce fazer um contrele do sucesso ou nao no bean, ou ate mesmo usando ajax. Fica a seu criterio.

Nao tenho exemplos prontos aqui no trabalho, mas vou tentar ser mais claro.

  1. Voce clicou no botao, apos salvar com sucesso, la no bean voce manda a mensagem de sucesso, nao tem erro, é igual a mensagem de erro:
public void salvar() {

     FacesContext context = FacesContext.getCurrentInstance();
     
      try {
         this.dao.insert(getBean());
         context.addMessage( null, new FacesMessage( "Coisa salva com sucesso." );
      } catch (Exception e) {
         context.addMessage( null, new FacesMessage( "Ocorreu um erro ao salvar a Coisa!" );
      }

}

La no <p:messages> pode deixar do jeito que ta, o que acontece que ele ira alterar a mensagem de acordo com a acao no bean.

Nao se esquecendo que pra atualizar é update=":form1:mensagem"

achei melhor por junto com a mensagem anterior.

Faz assim, segue o exemplo desse site, é meio complicado fazer da forma como te falei:

Nesse site ele mostra como voce redireciona a mensagem de acordo com o ID do <p:messages>

Boa Sorte, agora to ocupadao aqui no trampo eheheheheh =D

Gente gostaria de saber se tem como utilizar dois <p:messages> em minha pagina ?

<p:form id="form1"> 
    <p:messages id="m1" />
</p:form>

<p: dialog>
   <p:form id="form2"> 
       <p:messages id="m2" />
   </p:form>
</p:dialog>

Gostaria de ter um dentro de meu formulario principal e outro dentro de minha dialog. Quando eu realizo a validação dentro do meu Dialog aparece também no meu formulario pincipal, como resolver isso ?

Perdão, eu que coloquei errado mesmo.


Ele continua exibindo nos dois.... :?

Ele continua exibindo nos dois… :?

[code] <h:form id=“form1” prependId=“false”>

		<br /> 
	
 		<p:fieldset legend="Plano Plurianual" style="text-align:left;">		
		    
		    <br />
		    
		    <p:commandButton update=":form2" actionListener="#{ppaBean.prepararDialogPPA}" id="effectsDialogButton" value="CADASTRAR PLANO PLURIANUAL" oncomplete="dlg3.show();"  />
	 		
	 		<center>
	 			<p:messages id="mensagemPrincipal" /> 	    
		        </center>
		    
		</p:fieldset>   
		
	</h:form>

[/code]

<p:dialog widgetVar="dlg3" showEffect="explode" showHeader="false" hideEffect="bounce" height="250" width="500" modal="true" resizable="false">  
    	     
    	   <p:panel header="Formulário de Cadastro">
    	  	  	
    	  	 <h:form id="form2">	  
    	   		    <p: messages id="m2" />	
    			    <center>
			    		<p:panelGrid columns="2">
								<h:outputLabel value="Número da Lei : " for="numLei" />
								<p:inputText id="numLei" value="#{ppaBean.ppa.numLei}" required="true" requiredMessage="Informe o número da lei." />
								<h:outputLabel value="Data de Publicação : " for="dtPublic" />
								<p:calendar value="#{ppaBean.ppa.dtPublicacao}" locale="pt_BR" id="dtPublic" required="true" requiredMessage="Informe a data de publicação." />
								<h:outputLabel value="Ano Inicial : " for="dtAnoInicialPpa" />
								<p:inputText value="#{ppaBean.ppa.dtAnoInicialPpa}" id="dtAnoInicialPpa" required="true" requiredMessage="Informe o ano inicial." />
								<h:outputLabel value="Ano Final : " for="dtAnoFinalPpa" />
								<p:inputText value="#{ppaBean.ppa.dtAnoFinalPpa}" id="dtAnoFinalPpa" required="true" requiredMessage="Informe o ano final." />
			<p:commandButton update=":form2:m2" action="#{ppaBean.salvarPPA}" oncomplete="if(args.sucesso == true) { dlg3.hide();}"  icon="icon-check" value="Cadastrar" />  
								<p:commandButton id="rejeita" value="Fechar" icon="icon-cancel" onclick="dlg3.hide()" type="button" />
						</p:panelGrid>
					</center>
			  </h:form>
			  
			</p:panel>
			
		</p:dialog>  

Gostaria de executar o cadastro e exibir a mensagem de sucesso no :form1:mensagemPrincipal ? Tem como fazer isso ? O que acontece é que quando valido os campos no form2 ele tambem aparece no form1…

Vou testar aqui e mando retorno já já…

Exibiu apenas dentro da Dialgo agora. So me tira mais uma dúvida!!!

Eu faço um cadastro dentro da minha Dialog e após realizar esse cadastro eu gostaria de exibir a mensagem no forulário principal, isto é, no Form1:mensagemPrincipal. Tem possíbilidade de fazer isso ?

Agradeço a ajuda.

Tem algum exemplo para me demonstrar ? Perdão mas não compreendi de forma devida.

Eu fiz como falou, entretanto, quando lançou a validação dos campos acabou por aparecer a mensagem de validção nos dois formulários, tanto dentro do dialogo como também do formulário principal.


<p:inputText value="#{ppaBean.ppa.dtAnoFinalPpa}" id="dtAnoFinalPpa" required="true" requiredMessage="Informe o ano final." />  
            <p:commandButton update=":form1:mensagemPrincipal,:form2:m2" action="#{ppaBean.salvarPPA}" oncomplete="if(args.sucesso == true) { dlg3.hide();}"  icon="icon-check" value="Cadastrar" />    

Já agradeço o que fizestes até aqui. Obrigado!