"acesse aqui">Clique aqui para ler esse artigo em PDF.
JSF com MyFaces e Tomahawk
Aprenda a utilizar os recursos do MyFaces
Use a implementação do JavaServer Faces da Apache, considerada a mais sólida e confiável, e conheça um conjunto de tags JSF poderoso.
Uma das implementações do JavaServer Faces mais utilizada atualmente é o MyFaces, um projeto da Apache Software Foundation, que vem crescendo rapidamente e hoje vai muito além da especificação JSF. Além do MyFaces Core, a implementação do JSF em si, há vários subprojetos do MyFaces que fornecem componentes adicionais, trazendo suporte a Ajax e à vinculação com dados, entre outras funcionalidades importantes no desenvolvimento web.
Neste artigo apresentaremos o Apache MyFaces em geral, e criaremos um exemplo que faz uso dos componentes JSF fornecidos pelo mais popular dos seus subprojetos, o Tomahawk.
Projetos do MyFaces
Muitas das funcionalidades que diferenciam o MyFaces estão nos seus subprojetos, que apresentamos brevemente a seguir:
§ Tomahawk – O Tomahawk é o principal e mais utilizado subprojeto do MyFaces. Ele possui uma grande quantidade de componentes visuais, como menus, tabelas com ordenação interativa, calendários e até um editor de HTML. Já há versões estáveis disponíveis para uso em produção.
§ ADF Faces / Trinidad – O ADF Faces inclui mais de 100 componentes JSF. Foi desenvolvido originalmente pela Oracle como uma implementação completa do padrão JSF e depois doado à Apache Software Foundation. Embora os componentes estejam bastante maduros, o projeto está atualmente incubado no projeto MyFaces. Quando sair da incubação, assumirá o nome “Trinidad”.
§ Tobago – Além de ser um conjunto de componentes JSF que funciona sobre a implementação do MyFaces, o principal objetivo do Tobago é tornar mais ágil o desenvolvimento de aplicações web. O Tobago fornece um gerenciador de layouts que organiza automaticamente os componentes na página, não sendo necessário o uso de tabelas para esse objetivo.
§ Sandbox – O projeto Sandbox consiste em componentes JSF ainda em fase de desenvolvimento, e que futuramente podem fazer parte do Tomahawk.
A aplicação de exemplo
Para ilustrar o uso do MyFaces, vamos construir uma agenda de contatos, conforme ilustrado na Figura 1. O exemplo utiliza vários componentes padrão do JSF (fornecidos pelo MyFaces Core) e também diversos outros incluídos com o Tomahawk.
Figura 1. Página principal da aplicação de exemplo
Na inclusão de novos contatos, é usado um componente de calendário para informar a data de aniversário, conforme mostra a Figura 2. Note que usamos também um componente de menu. Com o Tomahawk é possível construir menus com submenus rapidamente. Outra funcionalidade interessante é a ordenação de colunas em tabelas. Através de cliques nos títulos das colunas da nossa tabela de contatos é possível ordená-las conforme desejado. E à medida que um contato marcado como favorito é adicionado, este aparece no menu Favoritos.
Figura 2. Consulta e inclusão de contatos
Para mantermos o foco na programação JSF, não será feito acesso a banco de dados; todas as informações dos contatos permanecerão em memória (usando coleções). Na Listagem 1 está o código da entidade Contato. Na Listagem 2, temos o código da classe ContatoDao que é responsável por incluir e consultar dados de contatos. O método consultarFavoritos() retorna todos os contatos que possuem a propriedade favoritos = true, e consultarAniversariantes() obtém os que fazem aniversário no dia e no mês fornecidos como parâmetros.
Listagem 1. Classe Contato
package br.com.jm.agenda;
import java.util.Date;
public class Contato implements Comparable<Contato> {
private int codigo;
private String nome;
private String telefone;
private Date aniversario;
private boolean favorito;
//... getters e setters omitidos ... ...