Slideshare.net (beta)

 
Post: 
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons



All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 0 (more)

03 Tapestry5 In Action Introduzione

From bobpuley, 6 months ago

introduzione a tapestry 5

354 views  |  0 comments  |  0 favorites  |  10 downloads
 

Groups/Events

Not added to any group/event

 
 

Privacy InfoNew!

This slideshow is Public

 
Embed in your blog
Embed (wordpress.com)
custom

Slideshow Statistics
Total Views: 354
on Slideshare: 354
from embeds: 0* * Views from embeds since 21 Aug, 07

Slideshow transcript

Slide 1: 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

Slide 2: 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

Slide 3: 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

Slide 4: 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

Slide 5: 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

Slide 6: 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

Slide 7: 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

Slide 8: 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

Slide 9: 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

Slide 10: 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

Slide 11: 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

Slide 12: 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

Slide 13: 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

Slide 14: 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

Slide 15: 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

Slide 16: 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

Slide 17: 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

Slide 18: 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

Slide 19: 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

Slide 20: 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

Slide 21: 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

Slide 22: 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

Slide 23: 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

Slide 24: 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