[RESOLVIDO]Atualizar Jsf para exibir mensagem no xhtml

DaniloAndrade, abaixo a parte do dialog e o botão no xhtml. Deixa eu te explicar como funciona: o usuário pode selecionar a editora por 2 jeitos :
1º --> Se ele souber o código da mesma, ele digita no Input e dá um tab (faz com que apareça o nome da editora que ele escolheu). Se o código não for encontrado, daí vem a dita warn…
2º --> Senão, ele clica no ComandButton e escolhe a editora por lá… Aki, nesse caso, não tem nda de mensagem…
Abaixo o código:

   <p:tab title="Cadastro" id="tabForm" rendered="#{sec:ifNotGranted('USR')}" >
                            <p:growl id="grow2" life="4000"/>
                            <p:focus for="aceTitulo"/>

                          
                            <p:dialog resizable="false" appendToBody="false" header="Pesquisa de Editora"
                                      widgetVar="EditoraDlg" id="editoraDlg" modal="true" style="position: fixed">
                                <p:panel header="Filtros de Consulta" id="parametrosEditoras">
                                    <table border="0" cellpadding="2" cellspacing="0" style="margin-right: 40px">
                                        <tr>
                                            <td align="right">Código:</td>
                                            <td>
                                                <p:inputMask id="inputPesquisaEditora1" onfocus="this.value='';" mask="9?9999" placeHolder="" size="6" value="#{editorasJsfBean.ediCodigo}"/>
                                            </td>
                                        </tr>
                                        <tr>
                                            <td align="right">Descrição:</td>
                                            <td>
                                                <p:inputText id="inputPesquisaEditora2" onfocus="this.value='';" size="40" value="#{editorasJsfBean.ediDescricao}"/>
                                            </td>
                                        </tr>
                                    </table>
                                    <br/>

                                    <p:commandButton id="butonConsultarEditora" actionListener="#{editorasJsfBean.atualizar()}" value="Consultar" image="search" update="tabelaEditoras" process="parametrosEditoras" onfocus="inputPesquisaEditora1"/>
                                </p:panel>
                                <div style="height:500px;overflow-x:auto;overflow-y:scroll;width: 1000px">
                                    <p:dataTable id="tabelaEditoras"
                                                 rowStyleClass="#{empty rowIx or rowIx mod 2 ne 0 ? 'even-row' : 'odd-row'}"
                                                 rowIndexVar="rowIx"
                                                 var="editora"
                                                 value="#{editorasJsfBean.editorasList}"
                                                 emptyMessage="Nenhum registro encontrado."
                                                 paginator="true"
                                                 paginatorPosition="bottom"
                                                 lazy="true"
                                                 rows="10" pageLinks="10"
                                                 paginatorTemplate="{CurrentPageReport} {FirstPageLink}
                                                 {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}
                                                 Exibir: {RowsPerPageDropdown}
                                                 Registros Encontrados: #{editorasJsfBean.editorasList.rowCount}"
                                                 rowsPerPageTemplate="10,25,35,50">
                                        <p:column headerText="Código" width="30">
                                            <h:outputText value="#{editora.ediCodigo}"/>
                                        </p:column>
                                        <p:column headerText="Descrição">
                                            <h:outputText value="#{editora.ediDescricao}"/>
                                        </p:column>
                                        <p:column headerText="Ação" width="50">
                                            <p:commandButton update="@form" value="Selecionar" image="ok" title="Selecionar">
                                                <f:setPropertyActionListener value="#{editora}" target="#{acervoJsfBean.crudObj.aceeditora}" />
                                                <f:setPropertyActionListener value="#{editora.ediCodigo}" target="#{acervoJsfBean.codigoEditoraParaRegistro}" />
                                                <f:ajax render="codigo_editora" event="change" listener="#{acervoJsfBean.atualizarCodigoDeEditora(event)}"/>
                                            </p:commandButton>
                                        </p:column>
                                    </p:dataTable>
                                </div>
                            </p:dialog>

 .....................................................................MAIS COISAS DA TELA.......................................................
............................Abaixo os inputsText e o Btn................

<div>
                                            <td align="right">Editora:</td>
                                            <h:panelGrid id="pnl_editora" columns="3">
                                                <p:inputMask  onkeypress="chamaDialog(event,'codigo_editora')" 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: 190px"/>
                                                <p:commandButton id="abreDialogEditora" icon="ui-icon-search" onclick="EditoraDlg.show()"/>
                                            </h:panelGrid><br/>
                                        </div>

[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]

Hummm… entendi… aí é o mesmo caminho… só que aonde vc for dar o tab (vc deve estar falando de um input)… vc tem que colocar o <p:ajax action="<o action que vai popular a mensagem>" event="onblur" update="grow2" />

Ok, vou testar também. Mais uma vez cara, mto obrigado por estão dando essa ajuda ae. Fico mto grato cara (Y)

[quote=ralphsilver][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]

Hummm… entendi… aí é o mesmo caminho… só que aonde vc for dar o tab (vc deve estar falando de um input)… vc tem que colocar o <p:ajax action="<o action que vai popular a mensagem>" event="onblur" update="grow2" />[/quote]

Bem cara, testei as maneiras que falou acima, troquei para onblur, troquei de f:ajax para p:ajax e nda… Nem abriu a página… PQP… tá tenso cara… Não sei amis oke fazer…
Mas, obrigado pela ajuda…e paciência…

vc está adicionando as mensagens no facemessage?

[quote=ralphsilver]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)[/quote]

cara… dá uma olhada aqui http://www.primefaces.org/showcase/ui/growl.jsf e ve se vc está esquecendo de alguma coisa

[quote=ralphsilver][quote=ralphsilver]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)[/quote]

cara… dá uma olhada aqui http://www.primefaces.org/showcase/ui/growl.jsf e ve se vc está esquecendo de alguma coisa[/quote]
Ok, vou olhar sim… Porém, se eu criar aquilo no bean que eu tenho:

 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");
                System.err.println("A editora com o código " + codigo + " não existe.");
            }
        } else {
            crudObj.setAceeditora(null);
        }
    }

o que eu colocaria??? E no xhtml, como eu chamaria aki ?


                                        <div>
                                            <td align="right">Editora:</td>
                                            <h:panelGrid id="pnl_editora" columns="3">
                                                <p:inputMask  onkeypress="chamaDialog(event,'codigo_editora')" 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: 190px"/>
                                                <p:commandButton id="abreDialogEditora" icon="ui-icon-search" onclick="EditoraDlg.show()"/>
                                            </h:panelGrid><br/>
                                        </div>

Desculpe se estou pedindo algo que eu já deveria saber, mas é que to meio perdido e nem sei mais oque fazer pra solucionar isso… Vlw

vc está dando um f:ajax aonde vc quer que chame a função não é?

Está caindo no action? vc está debugando ou printando alguma coisa pra ver se está caindo?

E este método warn(“Código Inválido”); põe aí a implementação dela!!

[quote=ralphsilver]vc está dando um f:ajax aonde vc quer que chame a função não é?

Está caindo no action? vc está debugando ou printando alguma coisa pra ver se está caindo?

E este método warn(“Código Inválido”); põe aí a implementação dela!![/quote]
Ok, Só um minuto.
Estou debugando sim, e está passando pelo warn, porém só aparece no System.out no console e no anvegador mesmo nao aparece nda.

[quote=ralphsilver]vc está dando um f:ajax aonde vc quer que chame a função não é?

Está caindo no action? vc está debugando ou printando alguma coisa pra ver se está caindo?

E este método warn(“Código Inválido”); põe aí a implementação dela!![/quote]

A implementação do warn:

 protected void warn(String summary) {

        JsfUtil.warn(summary);

    }


 public static void warn(String summary) {

        getFC().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_WARN, summary, null));

    }

então é estranho;… não está dando nenhum warn nos logs não?..
As vezes ele lançou um warning falando de algum problema…

cara… eu acho também que o f:ajax precisa estar dentro de um <h:form … põe um <h:form em volta do <p:table

[quote=ralphsilver]então é estranho;… não está dando nenhum warn nos logs não?..
As vezes ele lançou um warning falando de algum problema…

cara… eu acho também que o f:ajax precisa estar dentro de um <h:form … põe um <h:form em volta do <p:table[/quote]
Ok, vo testar aki. Além disso, vou limpar akela p#%@ tela e deixar só o campo de editora… Pra ver se dá alguma coisa… Já posto o resultado do teste aki. Mais uma vez, valeu pela ajuda que está dando ae cara :slight_smile:

Cara, funcionou, mtoo obrigado, pela ajuda, mas mtoo obrigado mesmo. Não sei nem como te agradecer. Vlw cara!!! Era a atualização do gorl msm :smiley:

Não precisou do form? e o update? vc já não estava dando no f:ajax?

Dei o update no growl só, junto com o render :slight_smile: