Gostaria de parabenizar este artigo sobre as funcionalidades a especificação do JSF 2 cobriu com a tag a <f:ajax>. O artigo foi bem objetivo, direto e esclarecedor. Só queria saber como ficou agora para colocar os ajax loaders? Parece que a especificação não cobriu nada que faça isso? Como o pessoal esta notificando o usuário das requisições ajax?
Oi Fernando,
Se for JSF, pode usar o ajax status do Prime.
http://www.primefaces.org/showcase-labs/ui/ajaxStatusHome.jsf
Ele se integra na tag ajax da especificação?
Nunca testei.
Usei com
<p:ajax />
do primefaces, que é uma “implementação” da <f:ajax />, com uns recursos a mais.
Então Lucas, assim não adianta pq vc ta usando ajax proprietário do prime.
Todos os fornecedores de componentes tem suas funcionalidades ajax…a pergunta foi para o ajax padrão da especificação
[quote=FernandoFranzini]Então Lucas, assim não adianta pq vc ta usando ajax proprietário do prime.
Todos os fornecedores de componentes tem suas funcionalidades ajax…a pergunta foi para o ajax padrão da especificação[/quote]
Voce ate pode usar o ajax da especificação.
mas aí no caso ficaria assim:
<h:selectOneMenu id="cbUf" value="#{cidadeBean.estado}" converter="estadoConverter" >
<f:selectItem itemLabel="Selecione"/>
<f:selectItems value="#{estadoBean.estados}" var="e" itemLabel="#{e.nome}" itemValue="#{e}" />
<f:ajax render="cbCidade" listener="#{cidadeBean.atualizaLista}" id="teste" />
<p:ajax id="teste" />
</h:selectOneMenu>
e colocaria o Ajax Status em algum lugar:
<p:ajaxStatus rendered="true" >
<f:facet name="start">
<h:graphicImage value="../img/ajax.gif" />
<h:outputText value="Aguarde um instante" />
</f:facet>
<f:facet name="complete">
<h:outputText value="" />
</f:facet>
</p:ajaxStatus>
Agora, se quiser usar JSF puro, acho que vai ter que criar meio que na unha…
Atualmente só uso jQuery para ajax.
Então meio complicado…pq vc duplicou o <p:ajax id=“teste” /> ??
Na verdade eu esperava que a especificação tivesse uma tag para loader…mas parece q não tem.
[quote=FernandoFranzini]Então meio complicado…pq vc duplicou o <p:ajax id=“teste” /> ??
Na verdade eu esperava que a especificação tivesse uma tag para loader…mas parece q não tem.[/quote]
Nao tem…
É meio complicado usar somente o JSF2 padrão da especificação. É muito pobre de componentes. Infelizmente, muitos dos sistemas que adotam JSF, acabam por ter que usar bibliotecas de terceiros.
[size=9]
Ps.
foi um dos motivos que me fez abandonar o jsf…[/size]
Não é que a especificação é pobre…é pq o objetivo da especificação fazer um core básico e deixar componentes para os provedores fazerem e concorrerem entre si. Pensa bem, se a especificação obrigasse a ter todos os componentes não havia tantas empresas oferecendo diferente opções de componentes.
Mas ok…parece que não tem mesmo.
Não faz sentido vc usar p:ajax + f:ajax…para seu caso, vc pode usar o prime mesmo.
Eu venho usando Rich faces ha muitos anos…
Salve.
Segue um exemplo que fiz utlizando a especificação pura.
No JS.
function showHideAjaxLoader(data){
if ( data.status == "begin")
$('#ajaxLoader').show();
else if (data.status == "success")
$('#ajaxLoader').hide();
}
Na página.
<h:commandButton action="#{oneventMB.upperCaseName}" value="Upper Case Name">
<f:ajax render="upper-case-name" onevent="showHideAjaxLoader" execute="name"/>
</h:commandButton>
<span id="ajaxLoader">
<h:graphicImage name="ajax-loader.gif" library="images"/>
</span>>
aqui vc pode fazer download ou checkout do projeto.
Muito bacana…depois vejo certinho