MundoJ Edição 74 - JSF2 e AJAX

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

&lt;p:ajax /&gt;

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:

       &lt;h:selectOneMenu id="cbUf" value="#{cidadeBean.estado}" converter="estadoConverter" &gt;

                            &lt;f:selectItem itemLabel="Selecione"/&gt;
                            &lt;f:selectItems value="#{estadoBean.estados}" var="e" itemLabel="#{e.nome}" itemValue="#{e}" /&gt;
                            &lt;f:ajax render="cbCidade" listener="#{cidadeBean.atualizaLista}" id="teste" /&gt;
                            &lt;p:ajax id="teste" /&gt;
                            
                       &lt;/h:selectOneMenu&gt;

e colocaria o Ajax Status em algum lugar:

                   &lt;p:ajaxStatus rendered="true" &gt;

                        &lt;f:facet name="start"&gt;
                            &lt;h:graphicImage value="../img/ajax.gif" /&gt;
                            &lt;h:outputText value="Aguarde um instante" /&gt;
                        &lt;/f:facet&gt;

                        &lt;f:facet name="complete"&gt;
                            &lt;h:outputText value="" /&gt;
                        &lt;/f:facet&gt;
                        
                    &lt;/p:ajaxStatus&gt;

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