quinta-feira, 3 de janeiro de 2013

[JSF] Usando Ajax com JSF.

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

<h:inputText value="">
   <f:ajax />
</h:inputText>

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á.

Nenhum comentário: