• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
03   Tapestry5 In Action   Introduzione
 

03 Tapestry5 In Action Introduzione

on

  • 1,726 views

introduzione a tapestry 5

introduzione a tapestry 5

Statistics

Views

Total Views
1,726
Views on SlideShare
1,726
Embed Views
0

Actions

Likes
0
Downloads
14
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

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

    03   Tapestry5 In Action   Introduzione 03 Tapestry5 In Action Introduzione Presentation Transcript

    •  
    • 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
    • Configurazione
      • editare il web.xml
    • Configurazione
      • editare il web.xml
    • Configurazione
      • includere le dipendenze
    • 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
        • on eventName [From componentId ].
          • 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 )