Arquitetura de Componentes JSF: Conceitos e Aplicações

Classificado em Computação

Escrito em em português com um tamanho de 5,64 KB.

Arquitetura de Componentes

Uma arquitetura de componentes possibilita que um software possa ser “montado” a partir de pedaços (componentes) mais simples e plugáveis.

A arquitetura do JSF possui componentes pré-definidos e é extensível (crie seus próprios componentes, visuais ou não).

Componentes possuem propriedades e geram eventos.

A visualização dos componentes pode ser renderizada em diferentes dispositivos/formatos (HTML, celular, PDA, etc.).

Componentes possuem facilidades de validação.

Componentes podem manter-se sincronizados com objetos Java (backing beans).

Componentes têm suporte para internacionalização.

JSF possui facilidades para definir a navegação entre as páginas.

Framework Dirigido a Eventos

Possui um modelo para manipulação de eventos.

Componentes geram determinados eventos.

Efetua chamada a um método (ação no servidor).

O estado da aplicação web muda devido ao evento disparado pelo usuário.

Um evento pode ser um clique de um botão, focar sobre um input ou mesmo alterar o valor de uma combobox.

Conceitos-Chave JSF

  • Componente de UI: São JavaBeans mantidos no servidor e que oferecem funcionalidades específicas de interatividade com o usuário. São usados nas visões, estruturados como uma árvore.
  • Renderer: Sabem como apresentar um componente de UI nos dispositivos de E/S específicos (mobile, desktops, etc.).
  • Validador: Sabem como realizar validações nos valores fornecidos pelo usuário.

Conceitos-Chave JSF (Continuação)

  • Managed Beans: JavaBeans que recebem os valores dos componentes e implementam métodos tratadores de eventos. Podem referenciar um componente de UI.
  • Conversor: Convertem valores de componentes UI em Strings e vice-versa (ex.: converter a String 15/10/2008 em um objeto Date).
  • Eventos e tratadores (listeners): JSF segue um modelo semelhante ao Swing para lidar com eventos de componentes de UI.
  • Mensagens: Fornecem uma forma padronizada dos outros elementos enviarem uma mensagem de erro para o usuário. Ela pode ser internacionalizada.
  • Navegação: JSF tem um mecanismo para definir a navegação entre as páginas da aplicação, ao invés dela ser definida dentro de cada página. Isso facilita a manutenção.

Managed Beans

Em JSF, o arquivo XHTML deve possuir tags HTML e JSF que definem o layout da página.

O comportamento da tela deve ser implementado em uma classe Java caracterizada como um managed bean.

Os managed beans atuam como canais entre a interface gráfica (a tela) e o back-end da aplicação (regras de negócio, acesso ao banco de dados, etc.).

As principais funções dos managed beans são:

  • Fornecer dados que serão exibidos nas telas.
  • Receber os dados enviados nas requisições.
  • Executar tarefas de acordo com as ações dos usuários.

Classes Managed Bean

São classes simples (estilo POJO, Java Bean).

Possuem os métodos de acesso (getters e setters) seguindo a convenção JavaBean.

Possuem os métodos relacionados às ações para as regras de navegação.

Eles devem ser do tipo void, quando não for necessária navegação na página JSF.

Ou retornam uma String que será utilizada para navegação através de configurações feitas no arquivo faces-config.xml.

Escopos do Managed Beans

  • @ApplicationScoped: Apenas uma instância da classe em toda a aplicação. Todos os usuários acessam a mesma instância.
  • @SessionScoped: Existe uma instância para cada usuário.
  • @RequestScoped (PADRÃO): Existe uma instância pelo tempo de duração da requisição feita pelo usuário.
  • @ViewScoped: Armazena a instância da classe Bean na página exibida. Enquanto esta estiver sendo manipulada, a mesma instância da classe Bean estará disponível.

Bindings

O JSF possui três tipos de bindings:

  • Value Binding: Ligamos a propriedade de um bean como o valor do componente.
  • Method Binding: Ligamos o método de um bean com uma “ação” do componente.
  • Component Binding: Ligamos a propriedade de um bean com a representação do componente na view.

Componentes Visuais

A especificação do JSF fornece um conjunto de componentes visuais básicos. São adicionados por meio de tags.

As principais bibliotecas de tags do JSF são:

  • Core: Responsável por tarefas comuns como internacionalização, validação e conversão de dados de entrada.
  • HTML: Possui componentes que geram conteúdo visual, como formulários, campos de entrada, botões, links, painéis, tabela, mensagens e etc.
  • Facelets: Para templates e modularização.

Os Atributos dos Componentes

As tags dos componentes possuem atributos que dizem como eles devem funcionar. Os atributos podem ser:

  • Básicos: quando são compartilhados pela maioria das tags (id, rendered, converter, binding, etc.).
  • Pass-through HTML: quando representam os mesmos atributos dos elementos HTML (size, style, styleclass, maxlength, etc.).
  • Eventos DHTML: atributos HTML que dão suporte a scripts (onclick, onchange, onsubmit, etc.).

Entradas relacionadas: