[RESOLVIDO]Atualizar Jsf para exibir mensagem no xhtml

Olá galera, tudo certo ? Bem, na minha aplicação estou tentando atualizar uma mensagem em que quando o usuário digita o código de algo que não existe, exibiria uma mensagem na tela : código inválido…
Porém, na página xhtml não exibe, mas se eu der um System.out… está aparecendo no console…
Abaixo o código xhtml:

<td align="right">Editora:</td>  
                                            <h:panelGrid id="pnl_editora" columns="3">  
                                                <p:inputMask id="codigo_editora" size="6"   mask="9?9999" required="false" requiredMessage="O campo editora deve ser informado." placeHolder="" value="#{acervoJsfBean.codigoEditoraParaRegistro}" >  
                                                    <f:ajax render="codigo_editoraMostra"  event="change" listener="#{acervoJsfBean.atualizarEditoraPorCodigo(event)}"/>  
                                                </p:inputMask>  
                                                <p:inputText id="codigo_editoraMostra" disabled="true" required="false" requiredMessage="O campo editora deve ser informado." value="#{acervoJsfBean.crudObj.aceeditora.ediDescricao}" style="width: 230px"/>  
                                                <p:commandButton icon="ui-icon-search" onclick="EditoraDlg.show()"/>  
                                            </h:panelGrid>  

No bean:

public void atualizarEditoraPorCodigo(AjaxBehaviorEvent event) {  
       fillEditoraPorCodigo(this.codigoEditoraParaRegistro);  
   }  
  
   private void fillEditoraPorCodigo(String codigo) {  
       if (codigo != null && !codigo.trim().equals("")) {  
           Editoras editora = e.findEditoraByCodigo(codigo);  
           if (editora != null) {  
               aceeditora = editora.getEdiDescricao();  
               crudObj.setAceeditora(editora);  
           } else {  
               nomeEditoraParaRegistro = null;  
               codigoEditoraParaRegistro = null;  
               warn("Código Inválido"); ----> essa mensagem que estou TENTANDO COLOCAR NA TELA....  
               System.err.println("A editora com o código " + codigo + " não existe."); ---> essa esta sendo exibida quando nao é encontrado o codigo digitado  
           }  
       } else {  
           crudObj.setAceeditora(null);  
       }  
   }  

Estou tentando a um bom tempo atualizar isso aki, mas não estou conseguindo…Se alguém puder ajudar, agradeço muito.

coloca a tag

<h:messages />

no seu xhtml

vê se funciona

mas de qualquer forma vc precisa postar o código desse método warn()

pra saber se esta fazendo tudo certo

E como vc está printando esta mensagem?

Tipo… vc precisa especificar um lugar para printar ela… como um message ou até mesmo um growl (já que vc está utilizando primefaces)

Bom dia.
Bem, esse warn é o mesmo exemplo do PrimeFaces. Eu tenho na minha aplicação outros warn’s, info’s e estão funcionando normal, mas com esse tipo, em que o usuário digita no campo e dá um Tab para ver se EXISTE OU NAO o código nao to conseguindo de jeito nenhum. Não sei oke estou fazendo de errado.
Abaixo, um que está funcionando.

public void excluirPagamentoMultas() throws Exception {  
     try {  
         if (empxex.getEmxexMultapaga().equals("S") && empxex.getEmxexDtpagaMulta() != null) {  
             empxex.setEmxexMultapaga("N");  
             empxex.setEmxexDtpagaMulta(null);  
             salvaObjeto(empxex);  
             info("Pagamento excluído com sucesso.");  
         } else {  
             warn("A multa não foi paga.");  
         }  
     } catch (Exception exception) {  
         fatal("Erro grave: " + exception.getMessage());  
     }  
}  

Não sei se é porque nos outros eu clico em algum botão para exibir a mensagem ou algo similar e nesse SOMENTE dou um TAB. Se puder ajudar, agradeço mto, mto mesmo. Vlw

Para te dar uma resposta mais concreta é preciso ver o que você faz no teu método warn()

Mas parece estar faltando algo no teu xhtml. Por exemplo, não tem um p:message ou um p:growl

Como você está fazendo uma chamada ajax, talvez você precise usar o update na tag p:ajax (para atualizar uma p:message ou p:growl)

Espero ter ajudado

sds

[quote=cgraf]Para te dar uma resposta mais concreta é preciso ver o que você faz no teu método warn()

Mas parece estar faltando algo no teu xhtml. Por exemplo, não tem um p:message ou um p:growl

Como você está fazendo uma chamada ajax, talvez você precise usar o update na tag p:ajax (para atualizar uma p:message ou p:growl)

Espero ter ajudado

sds[/quote]

Se ele utilizar o Faces Message não precisa dar update na tag messages … se utilizar growl vai precisar…

Estou utilizando o vários Grows no meu xhtml… Ele é meio extenso… Total da tela dá umas 700 e pocas linhas… Poderia postar ela ou uma aprte para analizarem se preciso dar ou tirar algum update ??? Vlw

como vc esta usando ajax vc tem que da um update no lugar onde esta contido a tag grows ou messages

Neste método warn seu vc precisa setar a mensagem assim (Exemplo):

FacesContext context = FacesContext.getCurrentInstance(); context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Successful", "Remove successfully"));

e colocar o id do growl no update do botão

Amigos, se alguém ainda puder ajudar, abaixo está o código xhtml:
Sendo que, a parte que eu postei está da linha 294 a 303 e tenho na linha 41 isso : <p:growl id=“grow2” life=“4000”/>

Então…

No commandButton que é clicado… adiciona o atributo update=“grow2” … ve se funciona…

E o método warn que vc criou no seu ben precisa adicionar a mensagem no faces message

[quote=ralphsilver]Então…

No commandButton que é clicado… adiciona o atributo update=“grow2” … ve se funciona…

E o método warn que vc criou no seu ben precisa adicionar a mensagem no faces message[/quote]

Bem, vou tentar fazer isso, mas se ele clicar no botão vai ABRIR o dialog… E eu queria que a mensagem aparecesse depois que o cara dá um TAB… Conseguiu entender ?
Vlw e obrigado pela ajuda.

<f:ajax render="codigo_editoraMostra, grow2" event="change" listener="#{acervoJsfBean.atualizarEditoraPorCodigo(event)}"/>  

so colocar o id do growl no render do f:ajax

uma dica, vc pode colocar apenas um growl no seu tamplete e todas as telas usar esse mesmo growl pra exibir a mensagem

[quote=ralphsilver]Então…

No commandButton que é clicado… adiciona o atributo update=“grow2” … ve se funciona…

E o método warn que vc criou no seu ben precisa adicionar a mensagem no faces message[/quote]

Bem, vou tentar fazer isso, mas se ele clicar no botão vai ABRIR o dialog… E eu queria que a mensagem aparecesse depois que o cara dá um TAB… Conseguiu entender oque estou tentando dizer e também o código da página ?
Vlw e obrigado pela ajuda.

coloca a parte do xhtml do dialog que esta executando o metodo que vai lançar a mensagem

ta f%$# ver nesse seu xhtml

[quote=DaniloAndrade] <f:ajax render="codigo_editoraMostra, grow2" event="change" listener="#{acervoJsfBean.atualizarEditoraPorCodigo(event)}"/>

so colocar o id do growl no render do f:ajax

uma dica, vc pode colocar apenas um growl no seu tamplete e todas as telas usar esse mesmo growl pra exibir a mensagem[/quote]

Bhá cara, testei aqui e deu um pau feio na tela…Não funcionou… Alguma outra dica?? Obrigado pela ajuda…

[quote=DaniloAndrade]coloca a parte do xhtml do dialog que esta executando o metodo que vai lançar a mensagem

ta f%$# ver nesse seu xhtml[/quote]

Blz, entendo qeu o negócio tá tenso… Só um minuto e já posto cara… Vlw pela ajuda que vc e os outros estão dando ae :slight_smile:

[quote=Ricardo Fávero Júnior][quote=ralphsilver]Então…

No commandButton que é clicado… adiciona o atributo update=“grow2” … ve se funciona…

E o método warn que vc criou no seu ben precisa adicionar a mensagem no faces message[/quote]

Bem, vou tentar fazer isso, mas se ele clicar no botão vai ABRIR o dialog… E eu queria que a mensagem aparecesse depois que o cara dá um TAB… Conseguiu entender oque estou tentando dizer e também o código da página ?
Vlw e obrigado pela ajuda. [/quote]

vc fez isso

<f:ajax render="codigo_editoraMostra, grow2" event="change" listener="#{acervoJsfBean.atualizarEditoraPorCodigo(event)}"/> //colocou o id do growl no render do f:ajax

troca o event para blur

[quote=DaniloAndrade][quote=Ricardo Fávero Júnior][quote=ralphsilver]Então…

No commandButton que é clicado… adiciona o atributo update=“grow2” … ve se funciona…

E o método warn que vc criou no seu ben precisa adicionar a mensagem no faces message[/quote]

Bem, vou tentar fazer isso, mas se ele clicar no botão vai ABRIR o dialog… E eu queria que a mensagem aparecesse depois que o cara dá um TAB… Conseguiu entender oque estou tentando dizer e também o código da página ?
Vlw e obrigado pela ajuda. [/quote]

vc fez isso

<f:ajax render="codigo_editoraMostra, grow2" event="change" listener="#{acervoJsfBean.atualizarEditoraPorCodigo(event)}"/> //colocou o id do growl no render do f:ajax

troca o event para blur

[/quote]
Ok, vou testar

eu não lembro direiro, mas no update vc separa o id usando a “,” mas no f:ajax no render acho que deve-se separar os ids com o espaço