SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie Tapestry 5 in Action Introduzione

JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5Marcello Teodori
 
Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsAlberto Brandolini
 
Javaday 2009 php e java
Javaday 2009 php e javaJavaday 2009 php e java
Javaday 2009 php e javaMatteo Baccan
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On RailsLuca Mearelli
 

Ähnlich wie Tapestry 5 in Action Introduzione (7)

JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5JBoss Seam, un framework per Java EE 5
JBoss Seam, un framework per Java EE 5
 
Maven Eclipse
Maven EclipseMaven Eclipse
Maven Eclipse
 
Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con Grails
 
Dessi Tech Day2008 Cagliari
Dessi Tech Day2008 CagliariDessi Tech Day2008 Cagliari
Dessi Tech Day2008 Cagliari
 
Spring Roo JaxItalia09
Spring Roo JaxItalia09Spring Roo JaxItalia09
Spring Roo JaxItalia09
 
Javaday 2009 php e java
Javaday 2009 php e javaJavaday 2009 php e java
Javaday 2009 php e java
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On Rails
 

Tapestry 5 in Action Introduzione

  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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