Alguns Conceitos e Convenções do Framework

Naming Conventions

O tapestry usa uma convenção de nomenclatura no tratamento dos eventos, associando métodos aos id's dos componentes. Por exemplo: colocando o atributo t:id=”select” no componente ActionLink o framework vai chamar o método formado por um prefixo (nesse caso, onActionFrom) e usar o id do componente como sufixo (nesse caso, select), gerando a chamada ao método onActionFromSelect(Object parametro) passando como parâmetro o atributo que é declarado no atributo context=”…”. Se o método não existir na classe nada acontece ao clicar no link.

Convention over Configuration

O framework utiliza convenções para substituir algumas configurações em arquivo. Os templates, as classes e os recursos das páginas e componentes tem sua localização previamente convencionada. A localização dos outros arquivos da aplicação é de livre escolha do desenvolvedor.

Exemplo de localização das páginas:

  • Classe (.java) - src/main/java/org.exemplo.t5teste.pages
  • Template (.tml) - src/main/webapp ou src/main/resources/org.exemplo.t5teste.pages
  • Catálogo (.properties) - src/main/resources/org.exemplo.t5teste.pages

Exemplo de localização dos componentes:

  • Classe (.java) - src/main/java/org.exemplo.t5teste.components
  • Template (.tml) - src/main/resources/org.exemplo.t5teste.components
  • Catálogo (.properties) - src/main/resources/org.exemplo.t5teste.components

Anotações Tapestry

As anotações específicas do tapestry devem ser usadas somente nas classes que pertencem aos pacotes pages, components, mixins, base, data e entities.

  • @Property - O tapestry cria em tempo de execução os métodos de acesso da propriedade (get e set).
  • @Inject - É usada para injetar dependências e outros recursos.
  • @IncludeStylesheet("context:layout/layout.css") - É uma forma de injetar o arquivo de estilo CSS, nesse caso, o arquivo layout.css está gravado na pasta src/main/webapp/layout/.
  • @Persist - O tapestry usa um mecanismo de pool de páginas, depois de utilizadas elas são devolvidas ao pool e reutilizadas posteriormente por outros usuários, mas antes de devolver ao pool o framework reinicializa as variáveis de instância. A anotação mantém o estado do campo entre as requisições. A persistência pode usar as abordagens “Session” (default), “Client” ou “Flash”. A estratégia flash mantém os dados na sessão, mas o framework deleta seu conteúdo automaticamente após usar a informação para restaurar o estado da página. O método discardPersistentFieldChanges() limpa todos os dados persistentes da página, ele não afeta a página em memória, somente a requisição subsequente. Exemplo:


@Inject
private ComponentResources componentResource;


componentResource.discardPersistentFieldChanges();

  • @SessionState - É um objeto que pode ser compartilhado por todas as páginas da aplicação (Session State Object – SSO). Seus dados são persistidos pelo framework e ficam vinculados a sessão de cada usuário.

Serviços

Um Serviço consiste basicamente de duas partes, interface e implementação. Ele deve ser declarado no arquivo AppModule.java fazendo a ligação (bind) entre a interface e sua implementação. O escopo padrão de um serviço é singleton, ele é criado pelo framework quando um método da interface for chamado pela primeira vez.

Características

O suporte a Ajax e a integração com os frameworks Spring e Hibernate, além da escalabilidade em ambiente de cluster, são características importantes do tapestry.

Mais informações

Consulte a página de referência dos componentes . Veja também os tópicos Configuring Tapestry , Tapestry IoC Services, Project Layout, Persistent Page Data e Persistent State.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License