JSF com MyFaces e Tomahawk

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

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.

Esse artigo faz parte da revista Java Magazine edição 47. Clique aqui para ler todos os artigos desta edição

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

 

}

 

Listagem 2. Classe ContatoDao

package br.com.jm.agenda;

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?