[JSF] Usando Ajax com JSF.
Autor: Mauricio Marinho | Publicado: 2013-01-03T21:37:00-03:00

The Java EE 6 Tutorial, Part II The Web Tier, Cap. 11 Using Ajax with JavaServer Faces Technology.

Visão Geral sobre Ajax.

Ajax refere-se a JavaScript e XML, tecnologias que são amplamento usadas para criar conteúdo web dinâmico e assíncrono. O foco deste tutorial está em usar JavaScript em funcionalidades baseadas em Ajax em aplicações web JSF.

JavaScript é uma linguagem orientada a objetos que permite adicionar funcionalidades à camada de apresentação para interações assíncronas com o cliente, onde é originalmente executada (também há JavaScript Side Server).

Quando uma função JavaScript envia uma requisição assíncrona para o servidor, o servidor envia de volta uma resposta usada para atualizar o DOM (Document Object Model) da página.

A resposta do servidor não precisa ser, necessariamente, em XML, também pode ser em JSON (formato de dados JavaScript).

Ajax permite atualização assíncrona e parcial da camada de apresentação, ou seja, funcionalidades Ajax podem trocar informações com o servidor sem a necessidade de submeter ou atualizar a página inteira (refresh).

Usando Ajax com JSF.

Funcionalidades Ajax podem ser adicionadas a aplicações JSF de uma das duas maneiras seguintes:

Programando a funcionaliade Ajax em JavaScript diretamente na página.
Usando uma biblioteca com funcionalidades Ajax embutidas.

A plataforma JEE 6 suporta Ajax por uma biblioteca JavaScript embutida. Logo, os componentes UI JSF respondem a funcionalidades Ajax. Você também pode carregar esta biblioteca JavaScript e usar diretamente seus métodos dentro dos Managed Beans.

A tag JSF específica para Ajax é f:ajax e seus atributos serão explicados a seguir. 


Atributo
Tipo
Descrição

disabled
javax.el.ValueExpression retorna um Boolean
Se true o comportamento Ajax não deve ser renderizado, se false, o comportamento Ajax deve ser renderizado, o default é false. 

event
javax.el.ValueExpression retorna uma String
Uma String que identifica o tipo de evento em que a ação Ajax será aplicada. Se especificado, deve ser um dos eventos suportados pelo componente. Se não especificado, o evento default (o evento que dispara a requisição Ajax) é determinado para o componente. O evento dafult é
action para componentes ActionSource e valueChange para componentes EditableValueHolder.

execute
javax.el.ValueExpression retorna um
Object
Uma Collection que identifica uma lista de componentes para ser executada no servidor. Se uma literal é especificada, deve ser uma String
delimitada por espaços de identificadores de componentes e/ou uma das palavras chave. Se uma ValueExpression é especificada, deve referenciar uma propriedade que retorna uma Collection de String objetos. Se não especificada, o valor default é @this.

immediate
javax.el.ValueExpression retorna um Boolean
Um Boolean que indica se a entrada é para ser processada antes do ciclo de vida. 

listener
javax.el.MethodExpression
O nome do método listener que será chamado quando um
AjaxBehaviorEvent for disparado.

onevent
javax.el.ValueExpression retorna uma String
O nome da função JavaScript que irá manipular os UI events.

onerror
javax.el.ValueExpression retorna uma String
O nome da função JavaScript que irá manipular os erros.

render
javax.el.ValueExpression retorna um Object
Uma Collection que identifica uma lista de componentes a serem renderizados. Se uma literal é especificada deve ser uma String delimitada por espaços de identificadores de componentes e/ou de palavras-chave. Se uma ValueExpression é especificada, deve referenciar uma propriedade que retorna uma Collection de objetos
String. Se não especificada, o valor default é @none.




Palavra-chave
Descrição

@all
Todos os componentes identificados

@form
Os componentes do formulário

@none
Nenhum componentes identificado

@this
O elemento que disparou a requisição


Exemplo de uso da tag f:ajax

&lt;h:inputText value=""&gt;
&nbsp;&nbsp; &lt;f:ajax /&gt;
&lt;/h:inputText&gt;

Note que quando você usa a tag f:ajax em uma página Facelets, a biblioteca JavaScript que suporta Ajax que já vem no J2EE 6 é carregada implicitamente. Este recurso também pode ser carregado explicitamente, veja mais detalhes em Loading JavaScript as a Resource no The Java EE 6 Tutorial.

No próximo post veremos como enviar uma requisição Ajax e receber uma resposta. Até lá.