03 Tapestry5 In Action Introduzione

download 03   Tapestry5 In Action   Introduzione

If you can't read please download the document

Transcript of 03 Tapestry5 In Action Introduzione

Tapestry5 in actionIntroduzione

Indice

Presentazione

Concetti chiave

Configurazione

Component Classes

Component Templates

Gestire gli eventi

Gestire la navigazione

Componenti predefiniti

Presentazione

Cos' ?

Web framework creato da Haward L. Ship, orientato ai componenti, fortemente scalabile grazie anche alla gestione delle istanze tramite il pooling

Presentazione

Goals

Non occorre estendere o implementare alcuna classe

Gestione trasparente dello stato dei componenti

Rapidit di sviluppo

Semplicit di utilizzo dei componenti

Live reloading in fase di sviluppo

Presentazione

Moduli tapestry

tapestry-core

tapestry-ioc

tapestry-annotations

tapestry-upload

tapestry-hibernate

tapestry-spring

tapestry-test

Concetti chiave

IOC

Tutto componente

Runtime bytecode manipulation

Template html per la view

Persistenza delle variabili di classe

Injection dei servizi

Asset

Configurazione

Editare il web.xml

Includere le dipendenze nel classpath

I vincoli di struttura

Configurazione

editare il web.xml

[...]

tapestry.app-packagejavaday.jukebox.web

jukeorg.apache.tapestry.TapestryFilter

juke/*

[...]

Configurazione

editare il web.xml

[...]

tapestry.app-packagejavaday.jukebox.web

jukeorg.apache.tapestry.TapestryFilter

juke/*

[...]

Configurazione

editare il web.xml

[...]

tapestry.app-packagejavaday.jukebox.web

jukeorg.apache.tapestry.TapestryFilter

juke/*

[...]

Configurazione

includere le dipendenze

org.apache.tapestrytapestry-core5.0.6org.apache.tapestrytapestry-ioc5.0.6org.apache.tapestrytapestry-annotations5.0.6

Configurazione

i vincoli di struttura

organizzazione delle directories

tapestry.app-package (dichiarato nel web.xml)

pages (component classes, templates e messages)

components (component classes, templates e messages)

mixins (component classes, templates e messages)

state (classi per la gestione dello stato dell'applicazione)

services (classi per la cofigurazione del container IOC)

Configurazione

i vincoli di struttura

organizzazione dei files

Il template e la classe di un componente devono essere nello stesso package e avere lo stesso nome

Nel caso delle pages il template pu trovarsi nella webroot

Component classes

Dal punto di vista dello sviluppatore:

Pagine e componenti differiscono solo per il package a cui appartengono

Una pagina sostanzialmente il root element di una gerarchia di componenti

Component classes

Di base una component class deve:

Essere pubblica

Trovarsi nel package corretto

root-package/pages

root-package/components

root-package/mixins

Avere un costruttore pubblico senza argomenti

Component classes

Una component class pu:

Essere posizionata in un qualunque subpackage

Avere delle variabili di istanza

devono essere private

di default vengono reimpostate ad ogni request

Se annotate come persistenti mantengono il valore cross-request

Avere dei metodi per la gestione di eventi o del ciclo di vita del componente stesso.

Component templates

Un component template deve:

Rispettare le regole di well formed xml

Avere estensione .tml

Trovarsi nel package corretto

root-package/components

root-package/mixins

root-package/pages

Web app contextRoot (solo per le pages)

Component templates

Un component template pu:

Essere localizzato (SomeComponent_it.tml)

Essere ereditato dalla classe parent

Dichiarare un Doctype (quello sul componente pi esterno sovrascrive gli altri)

Dichiarare il tapestry namespace indispensabile per poter usare i tapestry components e quelli custom

Component templates

I principali tapestry elements sono:

body (renderizza il body del componente)

block (incapsula un frammento di template)

parameter (speciale tipo di block)

container (workaround per rispettare il well formed)

expansions (output render, simile al EL. Es: ${espressione})

Gestire gli eventi

Gli event handler methods si definiscono:

Attraverso l'annotation OnEvent.

Es: @OnEvent(component=formUtente, value=success)

Rispettando la naming convention

oneventName[FromcomponentId].

es: void onSuccessFromFormUtente(String user, String pass)

Gestire gli eventi

I parametri passati agli event handler methods:

Possono essere 0 o pi

Vengono automaticamente convertiti al tipo definito nella signature del metodo (per ogni tipo riconosciuto da tapestry)

Possono essere intercettati genericamente definendo un unico parametro di tipo Object[]

Gestire gli eventi

Da notare che:

Nelle urls generate dagli eventi, non presente alcuna informazione su cosa debba accadere

I componenti che definiscono degli event handler methods, hanno la responsabilit di conoscere e implementare il comportamento che deve verificarsi in corrispondenza dell'evento.

Gestire la navigazione

Gli event handler methods e lifecycle methods possono restituire:

void o null (implica una redirect alla pagina corrente)

String (nome della pagina da renderizzare)

Class (corrispondente ad una page)

Page (deve essere creata con @InjectPage)

Link (redirect)

Stream (per pdf, download o.... mp3)

Componenti predefiniti

I principali componenti forniti da Tapestry sono:

Control (If, Loop)

Link (ActionLink, PageLink)

Form (Form, TextField, DateField, PasswordField, Select)

Complessi (BeanDisplay, BeanEditForm, Grid)

Cliccate per modificare il formato del testo della struttura

Secondo livello struttura

Terzo livello struttura

Quarto livello struttura

Quinto livello struttura

Sesto livello struttura

Settimo livello struttura

Ottavo livello struttura

Nono livello struttura

Marco Pugliese - [email protected] Java Italian PortalJavaday Roma - 01/12/2007

Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License