• Nenhum resultado encontrado

6. TAPESTRY

6.1 Estrutura

Uma aplicação Tapestry é composta por um conjunto de páginas que são compostas de componentes. Cada página é construída pela combinação de três artefatos: uma página HTML (onde o usuário irá interagir), uma especificação desta página (que é um arquivo XML) e uma classe Java (responsável pela lógica) referente a esta página. Uma página possui um específico e único nome e este nome é utilizado para a localização da especificação da página, portanto a página HTML e sua especificação devem ter o mesmo nome.

Segue um exemplo que utiliza os três artefatos utilizados por uma página Tapestry. O exemplo será uma página com um link, que quando o usuário clicar neste link, será invocado um determinado método da classe Java referente à página em questão.

Assim como o JSF, é necessário configurar o Tapestry e seus respectivos servlets essenciais no arquivo de configuração do container web, que no caso do Tomcat é o web.xml.

Após ser feita esta configuração (e algumas outras, dependendo do ambiente desejado), o framework esta pronto para ser utilizado.

O exemplo será composto por:

• Uma página HTML que é a página que o usuário visualizará e interagirá, esta página será denominada de ‘TesteTapestry.html’.

• Uma especificação desta página, que é um arquivo XML com determinadas configurações de componentes utilizados na página. Este arquivo de especificação deve possuir o mesmo nome da página ao qual ele será referente e deve possuir a extensão ‘.page’, portanto o arquivo será denominado de

‘TesteTapestry.page’.

• E por último a classe Java desta página, esta classe que será responsável por alguma lógica que possa ser implementada, podendo também redirecionar para outras páginas por exemplo, não se restringindo somente a ser uma classe com lógica de negócio. A classe não precisa necessariamente possuir o mesmo nome da página, mas para manter um padrão, a classe será denominada de

‘TesteTapestry.java’.

Página HTML

A página HTML será simples, apenas conterá o link para o usuário clicar.

1. <html title="Login"> 2. <head></head>

3. <body>

4. <a href="#"

5. jwcid="testeLink" >

6. Clique para incovar o método 'imprime' 7. </a>

8. </body> 9. </html>

Exemplo 6.1.1

Na linha 5 encontra-se a identificação do componente Tapestry, que no arquivo de especificação da página será tratado e na linha 6, encontra-se o label do link, o texto que o usuário deverá clicar para executar o método imprime da classe Java da página.

Página de especificação

Conforme já explicado a página HTML deve conter uma página de especificação, que é onde estarão apontados os componentes e a classe Java da página. Segue a página de especificação do exemplo, a TesteTapestry.page:

1. <?xml version="1.0" encoding="UTF-8"?> 2. <!DOCTYPE page-specification PUBLIC

3. "-//Apache Software Foundation//Tapestry Specification 4.0//EN" 4. "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd"> 5.

6. <page-specification class="TesteTapestry">

7. <component id="testeLink" type="DirectLink">

8. <binding name="listener" value="listener:imprime" /> 9. </component>

10. </page-specification>

Exemplo 6.1.2

Como se pode observar no exemplo 6.1.2, o arquivo de especificação da página é um arquivo XML, conforme sua configuração (linha 1). Neste arquivo serão configurados os componentes que serão utilizados na página e é especificado qual será a classe Java utilizada nesta página. Na linha 6, a tag <page-specification class> indica qual será a classe Java da página, que no exemplo será a ‘TesteTapestry.java’. Na linha 7 é indicado através da tag

<component> qual componente será o campo que foi inserido na página HTML no exemplo

6.1.1 (linha 5), o atributo id da tag <component> é o mesmo que o atributo jwcid da página HTML, o atributo type indica qual o tipo de componente será inserido na página HTML, no exemplo será inserido o componente DirectLink (componente do Tapestry responsável por inserir um link na página HTML juntamente com suas configurações necessárias), e finalmente na linha 8, através da tag <binding>, é definido qual será a ação que será executada ao clicar no link, é utilizado o atributo listener (tag value) para indicar qual será a ação, ou melhor explicando, qual será o método da classe Java da página que deverá ser executado após o clique no link, no exemplo o método a ser executado será o imprime, portanto na tag value encontra-se listener:imprime.

Classe Java

Por último é necessário a classe Java da página que conterá o método imprime que será executado. A classe será denominada por TesteTapestry.java.

Uma classe de uma página possui várias responsabilidades definidas pelo framework, incluindo a de agir como um container para outros componentes. Segue a classe do exemplo:

1. public abstract class TesteTapestry extends BasePage 2. {

3. public void imprime(IRequestCycle cycle) 4. {

5. System.out.println("Método imprime executado com sucesso!"); 6. }

7. }

Na linha 1 do exemplo 6.1.3, se pode observar que a classe TesteTapestry estende a classe BasePage do framework que é a responsável pelo tratamento de classes de páginas HTML. Na linha 3 encontra-se o método que será executado ao clicar no link da página HTML, o método imprime. O método deve receber como parâmetro um objeto do tipo

IRequestCycle, este sendo uma interface Java do framework responsável pelo armazenamento

de informações referente a requisição corrente, através deste objeto é que o framework recupera a página ativa no momento e faz a lógica necessária para ser realizada a renderização da resposta que é enviada à máquina cliente. O método imprime apenas fará a impressão do texto ‘Método imprime executado com sucesso!’ na saída padrão do sistema.

Portanto este exemplo construirá uma página HTML contendo um link sobre o texto “Clique para incovar o método 'imprime'” que ao usuário clicar, será impresso na saída padrão o texto ‘Método imprime executado com sucesso!’.

Foram utilizados no exemplo os três principais artefatos utilizados por uma página do Tapestry. A página HTML, a especificação da página e a classe Java desta página.

Além destes recursos mostrados, existem muitos outros no Tapestry, como por exemplo, o uso de application objects (que são objetos utilizados na aplicação com um escopo definido, este podendo ser sessão ou aplicação), validação de formulários, callbacks (recurso para a exibição de uma determinada página que não pode ser exibida anteriormente, por exemplo, o usuário tenta acessar uma página da aplicação sem estar logado, neste caso será feito o redirecionamento para a página de login e após este ser efetuado, através do callback, a página anterior que o acesso não foi permitido é exibida), entre outros, que segundo Martins (2007), o domínio é essencial para a utilização do Tapestry em aplicações reais.

No documento FRAMEWORKS PARA O DESENVOLVIMENTO WEB (páginas 46-48)

Documentos relacionados