Tapestry 5 in Action Introduzione
Upcoming SlideShare
Loading in...5
×
 

Tapestry 5 in Action Introduzione

on

  • 3,515 views

Jakarta Tapestry è un framework basato su un modello a componenti che si distacca dall’approccio imperante del MVC. Durante il talk sarà sviluppata una semplice web application, un Joke box ...

Jakarta Tapestry è un framework basato su un modello a componenti che si distacca dall’approccio imperante del MVC. Durante il talk sarà sviluppata una semplice web application, un Joke box online, che permetterà di apprendere i concetti e le features di Tapestry 5.

Statistics

Views

Total Views
3,515
Views on SlideShare
3,507
Embed Views
8

Actions

Likes
1
Downloads
10
Comments
0

2 Embeds 8

http://www.slideshare.net 4
http://a0.twimg.com 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tapestry 5 in Action Introduzione Tapestry 5 in Action Introduzione Presentation Transcript

    • Tapestry5 in action Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Introduzione Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 1 Tapestry5 in action Javaday Roma - 01/12/2007
    • Indice Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Presentazione ● Concetti chiave ● Configurazione ● Component Classes ● Component Templates ● Gestire gli eventi ● Gestire la navigazione ● Componenti predefiniti ● Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 2 Tapestry5 in action Javaday Roma - 01/12/2007
    • Presentazione Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Cos' è? ● Web framework creato da Haward L. Ship, orientato – ai componenti, fortemente scalabile grazie anche alla gestione delle istanze tramite il pooling Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 3 Tapestry5 in action Javaday Roma - 01/12/2007
    • Presentazione Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 – Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 4 Tapestry5 in action Javaday Roma - 01/12/2007
    • Presentazione Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Moduli tapestry ● tapestry-core – tapestry-ioc – tapestry-annotations – tapestry-upload – tapestry-hibernate – tapestry-spring – tapestry-test – Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 5 Tapestry5 in action Javaday Roma - 01/12/2007
    • Concetti chiave Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License IOC ● Tutto è componente ● Runtime bytecode manipulation ● Template html per la view ● Persistenza delle variabili di classe ● Injection dei servizi ● Asset ● Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 6 Tapestry5 in action Javaday Roma - 01/12/2007
    • Configurazione Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Editare il web.xml ● Includere le dipendenze nel classpath ● I vincoli di struttura ● Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 7 Tapestry5 in action Javaday Roma - 01/12/2007
    • Configurazione Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License editare il web.xml [...] <context-param> <param-name>tapestry.app-package</param-name> <param-value>javaday.jukebox.web</param-value> </context-param> <filter> <filter-name>juke</filter-name> <filter-class> org.apache.tapestry.TapestryFilter </filter-class> </filter> <filter-mapping> <filter-name>juke</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> [...] Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 8 Tapestry5 in action Javaday Roma - 01/12/2007
    • Configurazione Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License editare il web.xml [...] <context-param> <param-name>tapestry.app-package</param-name> <param-value>javaday.jukebox.web</param-value> </context-param> <filter> <filter-name>juke</filter-name> <filter-class> org.apache.tapestry.TapestryFilter </filter-class> </filter> <filter-mapping> <filter-name>juke</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> [...] Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 9 Tapestry5 in action Javaday Roma - 01/12/2007
    • Configurazione Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License editare il web.xml [...] <context-param> <param-name>tapestry.app-package</param-name> <param-value>javaday.jukebox.web</param-value> </context-param> <filter> <filter-name>juke</filter-name> <filter-class> org.apache.tapestry.TapestryFilter </filter-class> </filter> <filter-mapping> <filter-name>juke</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> [...] Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 10 Tapestry5 in action Javaday Roma - 01/12/2007
    • Configurazione Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License includere le dipendenze <dependencies> <dependency> <groupId>org.apache.tapestry</groupId> <artifactId>tapestry-core</artifactId> <version>5.0.6</version> </dependency> <dependency> <groupId>org.apache.tapestry</groupId> <artifactId>tapestry-ioc</artifactId> <version>5.0.6</version> </dependency> <dependency> <groupId>org.apache.tapestry</groupId> <artifactId>tapestry-annotations</artifactId> <version>5.0.6</version> </dependency> </dependencies> Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 11 Tapestry5 in action Javaday Roma - 01/12/2007
    • Configurazione Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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) ● Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 12 Tapestry5 in action Javaday Roma - 01/12/2007
    • Configurazione Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 13 Tapestry5 in action Javaday Roma - 01/12/2007
    • Component classes Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 14 Tapestry5 in action Javaday Roma - 01/12/2007
    • Component classes Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 ● Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 15 Tapestry5 in action Javaday Roma - 01/12/2007
    • Component classes Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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. Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 16 Tapestry5 in action Javaday Roma - 01/12/2007
    • Component templates Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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) – Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 17 Tapestry5 in action Javaday Roma - 01/12/2007
    • Component templates Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 18 Tapestry5 in action Javaday Roma - 01/12/2007
    • Component templates Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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}) Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 19 Tapestry5 in action Javaday Roma - 01/12/2007
    • Gestire gli eventi Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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) Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 20 Tapestry5 in action Javaday Roma - 01/12/2007
    • Gestire gli eventi Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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[] Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 21 Tapestry5 in action Javaday Roma - 01/12/2007
    • Gestire gli eventi Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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. Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 22 Tapestry5 in action Javaday Roma - 01/12/2007
    • Gestire la navigazione Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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) – Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 23 Tapestry5 in action Javaday Roma - 01/12/2007
    • Componenti predefiniti Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License I principali componenti forniti da Tapestry sono: Control (If, Loop) ● Link (ActionLink, PageLink) ● Form (Form, TextField, DateField, ● PasswordField, Select) Complessi (BeanDisplay, BeanEditForm, Grid) ● Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 24 Tapestry5 in action Javaday Roma - 01/12/2007