[RESOLVIDO]Atualizar Jsf para exibir mensagem no xhtml
34 respostas
R
Ricardo_Favero_Junio
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:
<tdalign="right">Editora:</td><h:panelGridid="pnl_editora"columns="3"><p:inputMaskid="codigo_editora"size="6"mask="9?9999"required="false"requiredMessage="O campo editora deve ser informado."placeHolder=""value="#{acervoJsfBean.codigoEditoraParaRegistro}"><f:ajaxrender="codigo_editoraMostra"event="change"listener="#{acervoJsfBean.atualizarEditoraPorCodigo(event)}"/></p:inputMask><p:inputTextid="codigo_editoraMostra"disabled="true"required="false"requiredMessage="O campo editora deve ser informado."value="#{acervoJsfBean.crudObj.aceeditora.ediDescricao}"style="width: 230px"/><p:commandButtonicon="ui-icon-search"onclick="EditoraDlg.show()"/></h:panelGrid>
No bean:
publicvoidatualizarEditoraPorCodigo(AjaxBehaviorEventevent){fillEditoraPorCodigo(this.codigoEditoraParaRegistro);}privatevoidfillEditoraPorCodigo(Stringcodigo){if(codigo!=null&&!codigo.trim().equals("")){Editoraseditora=e.findEditoraByCodigo(codigo);if(editora!=null){aceeditora=editora.getEdiDescricao();crudObj.setAceeditora(editora);}else{nomeEditoraParaRegistro=null;codigoEditoraParaRegistro=null;warn("Código Inválido");---->essamensagemqueestouTENTANDOCOLOCARNATELA....System.err.println("A editora com o código "+codigo+" não existe.");--->essaestasendoexibidaquandonaoéencontradoocodigodigitado}}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.
mas de qualquer forma vc precisa postar o código desse método warn()
pra saber se esta fazendo tudo certo
R
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)
R
Ricardo_Favero_Junio
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.
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
C
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
R
ralphsilver
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
Se ele utilizar o Faces Message não precisa dar update na tag messages … se utilizar growl vai precisar…
R
Ricardo_Favero_Junio
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
D
DaniloAndrade
como vc esta usando ajax vc tem que da um update no lugar onde esta contido a tag grows ou messages
R
ralphsilver
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
R
Ricardo_Favero_Junio
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”/>
R
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
R
Ricardo_Favero_Junio
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
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.
uma dica, vc pode colocar apenas um growl no seu tamplete e todas as telas usar esse mesmo growl pra exibir a mensagem
R
Ricardo_Favero_Junio
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
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.
D
DaniloAndrade
coloca a parte do xhtml do dialog que esta executando o metodo que vai lançar a mensagem
uma dica, vc pode colocar apenas um growl no seu tamplete e todas as telas usar esse mesmo growl pra exibir a mensagem
Bhá cara, testei aqui e deu um pau feio na tela…Não funcionou… Alguma outra dica?? Obrigado pela ajuda…
R
Ricardo_Favero_Junio
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
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
D
DaniloAndrade
Ricardo Fávero Júnior:
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
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.
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
R
Ricardo_Favero_Junio
DaniloAndrade:
Ricardo Fávero Júnior:
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
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.
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
Ok, vou testar
D
DaniloAndrade
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
R
Ricardo_Favero_Junio
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:tabtitle="Cadastro"id="tabForm"rendered="#{sec:ifNotGranted('USR')}"><p:growlid="grow2"life="4000"/><p:focusfor="aceTitulo"/><p:dialogresizable="false"appendToBody="false"header="Pesquisa de Editora"widgetVar="EditoraDlg"id="editoraDlg"modal="true"style="position: fixed"><p:panelheader="Filtros de Consulta"id="parametrosEditoras"><tableborder="0"cellpadding="2"cellspacing="0"style="margin-right: 40px"><tr><tdalign="right">Código:</td><td><p:inputMaskid="inputPesquisaEditora1"onfocus="this.value='';"mask="9?9999"placeHolder=""size="6"value="#{editorasJsfBean.ediCodigo}"/></td></tr><tr><tdalign="right">Descrição:</td><td><p:inputTextid="inputPesquisaEditora2"onfocus="this.value='';"size="40"value="#{editorasJsfBean.ediDescricao}"/></td></tr></table><br/><p:commandButtonid="butonConsultarEditora"actionListener="#{editorasJsfBean.atualizar()}"value="Consultar"image="search"update="tabelaEditoras"process="parametrosEditoras"onfocus="inputPesquisaEditora1"/></p:panel><divstyle="height:500px;overflow-x:auto;overflow-y:scroll;width: 1000px"><p:dataTableid="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:columnheaderText="Código"width="30"><h:outputTextvalue="#{editora.ediCodigo}"/></p:column><p:columnheaderText="Descrição"><h:outputTextvalue="#{editora.ediDescricao}"/></p:column><p:columnheaderText="Ação"width="50"><p:commandButtonupdate="@form"value="Selecionar"image="ok"title="Selecionar"><f:setPropertyActionListenervalue="#{editora}"target="#{acervoJsfBean.crudObj.aceeditora}"/><f:setPropertyActionListenervalue="#{editora.ediCodigo}"target="#{acervoJsfBean.codigoEditoraParaRegistro}"/><f:ajaxrender="codigo_editora"event="change"listener="#{acervoJsfBean.atualizarCodigoDeEditora(event)}"/></p:commandButton></p:column></p:dataTable></div></p:dialog>.....................................................................MAISCOISASDATELA.......................................................
............................AbaixoosinputsTexteoBtn................
<div><tdalign="right">Editora:</td><h:panelGridid="pnl_editora"columns="3"><p:inputMaskonkeypress="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:ajaxrender="codigo_editoraMostra"event="change"listener="#{acervoJsfBean.atualizarEditoraPorCodigo(event)}"/></p:inputMask><p:inputTextid="codigo_editoraMostra"disabled="true"required="false"requiredMessage="O campo editora deve ser informado."value="#{acervoJsfBean.crudObj.aceeditora.ediDescricao}"style="width: 190px"/><p:commandButtonid="abreDialogEditora"icon="ui-icon-search"onclick="EditoraDlg.show()"/></h:panelGrid><br/></div>
R
ralphsilver
Ricardo Fávero Júnior:
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
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.
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" />
R
Ricardo_Favero_Junio
Ok, vou testar também. Mais uma vez cara, mto obrigado por estão dando essa ajuda ae. Fico mto grato cara (Y)
R
Ricardo_Favero_Junio
ralphsilver:
Ricardo Fávero Júnior:
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
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.
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" />
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…
R
ralphsilver
vc está adicionando as mensagens no facemessage?
R
ralphsilver
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)
Ok, vou olhar sim… Porém, se eu criar aquilo no bean que eu tenho:
publicvoidatualizarEditoraPorCodigo(AjaxBehaviorEventevent){fillEditoraPorCodigo(this.codigoEditoraParaRegistro);}privatevoidfillEditoraPorCodigo(Stringcodigo){if(codigo!=null&&!codigo.trim().equals("")){Editoraseditora=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><tdalign="right">Editora:</td><h:panelGridid="pnl_editora"columns="3"><p:inputMaskonkeypress="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:ajaxrender="codigo_editoraMostra"event="change"listener="#{acervoJsfBean.atualizarEditoraPorCodigo(event)}"/></p:inputMask><p:inputTextid="codigo_editoraMostra"disabled="true"required="false"requiredMessage="O campo editora deve ser informado."value="#{acervoJsfBean.crudObj.aceeditora.ediDescricao}"style="width: 190px"/><p:commandButtonid="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
R
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!!
R
Ricardo_Favero_Junio
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!!
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.
R
Ricardo_Favero_Junio
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!!
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
R
Ricardo_Favero_Junio
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
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
R
Ricardo_Favero_Junio
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
R
ralphsilver
Não precisou do form? e o update? vc já não estava dando no f:ajax?