Slideshow transcript
Slide 1: Tapestry5 in action Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Pratica 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 Preparare l'ambiente ● Creiamo la nostra prima page ● Creiamo un componente per gestire il layout ● Creiamo un componente per il login/logout ● La pagina di iscrizione utente ● L'upload di un file ● Realizziamo il jukebox ● Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 2 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 3: Tapestry5 in action Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Preparare l'ambiente Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 3 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 4: Preparare l'ambiente Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Software utilizzato: JDK 1.6 (mustang) – Servlet specification 2.4 – Maven2 – Eclipse 3.2 – Maven2 plugin ● Jetty launcher 1.4.1 ● Jetty 4.2.27 – Mysql Server 5.0 – Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 4 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 5: Preparare l'ambiente Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Prima di cominciare installiamo nel repository ● (locale) di maven tre jar previa scaricati: jukemodel-1.0.0.jar (allegato alla presentazione) – jid3lib-0.5.4.jar, JLayer(mp3 util, reperibili qui e qui) – jta-1.0.1B.jar (java transaction api, reperibile qui) – mvn install:install-file -DgroupId=jukemodel -DartifactId=jukemodel -Dversion=1.0.0 -Dpackaging=jar -Dfile=/jarfile/path -DpomFile=/pomfile/path mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -Dpackaging=jar -Dfile=/jarfile/path mvn install:install-file -DgroupId=jid3lib -DartifactId=jid3lib -Dversion=0.5.4 -Dpackaging=jar -Dfile=/jarfile/path mvn install:install-file -DgroupId=JLayer -DartifactId=JLayer -Dversion=1.0.0 -Dpackaging=jar -Dfile=/jarfile/path Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 5 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 6: Preparare l'ambiente Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Ok, apriamo eclipse creiamo il nostro maven2 ● project “jukeweb” File -> new -> project – Maven2 -> Maven2 project ● Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 6 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 7: Preparare l'ambiente Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Create project: Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 7 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 8: Preparare l'ambiente Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Configure project: Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 8 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 9: Preparare l'ambiente Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Creato il progetto aggiungiamo le dipendenze: <dependencies> <dependency> <groupId>jukemodel</groupId> <artifactId>jukemodel</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>org.apache.tapestry</groupId> <artifactId>tapestry-spring</artifactId> <version>5.0.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>2.0.2</version> </dependency> <dependencies> Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 9 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 10: Preparare l'ambiente Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Ora dovremmo avere tutte le librerie necessarie. Non ci resta che creare e configurare 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: Tapestry5 in action Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Creiamo la nostra prima page Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 11 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 12: Creiamo la nostra prima page Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Start.java: package javaday.jukebox.web.pages; public class Start { } Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 12 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 13: Creiamo la nostra prima page Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Start.tml: <html> <head> <title>home page</title> </head> <body> Benvenuti nel mondo di Tapestry!<br /> E' stata renderizzata la pagina ${class.simpleName}! </body> </html> Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 13 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 14: Creiamo la nostra prima page Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Start.tml: <html> <head> <title>home page</title> </head> <body> Benvenuti nel mondo di Tapestry!<br /> E' stata renderizzata la pagina ${class.simpleName}! </body> </html> Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 14 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 15: Creiamo la nostra prima page Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License La sintassi ${[prefix:]expression[.nestedExpr]} ● è detta Expansions. In un' expansions: ● L'espressione passata viene interpretata secondo le – regole di binding La regola da usare viene selezionata con un prefisso – prop (default) ● literal ● message ● Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 15 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 16: Creiamo la nostra prima page Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Bene, è giunto il momento di lanciare per la prima volta l'applicazione: Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 16 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 17: Creiamo la nostra prima page Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Configuriamo jetty: Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 17 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 18: Creiamo la nostra prima page Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Configuriamo e lanciamo jetty: Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 18 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 19: Creiamo la nostra prima page Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Infine digitiamo l'url sul browser: ● http://localhost:8080/jukeweb/ – Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 19 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 20: Tapestry5 in action Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Creiamo un componente per gestire il layout Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 20 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 21: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Prima di proseguire occorre includere nel ● progetto (in src/main/webapp/) alcune risorse disponibili come allegati alla presentazione: Stylesheets – Immagini – Un flash mp3 player – E in src/main/resources/ ● Javascript files – Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 21 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 22: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Come già detto le component classes e i ● component templates si devono trovare in qualunque sub-package di tapestry.app-package/components – Creiamo quindi un componente che ci consenta ● di “centralizzare” la gestione del layout delle pagine Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 22 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 23: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Border.java (versione 1) ● package javaday.jukebox.web.components; public class Border { } Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 23 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 24: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Border.tml (versione 1) ● <html xmlns:t=\"http://tapestry.apache.org/schema/tapestry_5_0_0.xsd\"> <head> <title>titolo finestra</title> <link rel=\"stylesheet\" href=\"/jukeweb/styles/layout.css\"></link> <link rel=\"stylesheet\" href=\"/jukeweb/styles/header.css\"></link> <link rel=\"stylesheet\" href=\"/jukeweb/styles/menu.css\"></link> <link rel=\"stylesheet\" href=\"/jukeweb/styles/body.css\"></link> <script src=\"/jukeweb/js/script.js\" ></script> <script src=\"/jukeweb/js/audio-player.js\" ></script> </head> ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 24 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 25: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Border.tml (versione 1) ● ... <body> <div class=\"page\"> <div class=\"header\"> <div class=\"gkey\" onclick=\"document.location.href='/jukeweb'\" onmouseover=\"this.style.cursor='hand'\"></div> <div class=\"title\">titolo pagina</div> </div> <div class=\"menu\"> menu </div> <div class=\"body\"> <t:body /> </div> <div class=\"footer\"> <a href=\"mailto:bobpuley@gmail.com\"> Created by bobpuley@gmail.com </a> </div> </div> </body> </html> Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 25 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 26: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Border.tml (versione 1) ● ... <body> <div class=\"page\"> <div class=\"header\"> <div class=\"gkey\" onclick=\"document.location.href='/jukeweb'\" onmouseover=\"this.style.cursor='hand'\"></div> <div class=\"title\">titolo pagina</div> </div> <div class=\"menu\"> menu </div> <div class=\"body\"> <t:body /> </div> <div class=\"footer\"> <a href=\"mailto:bobpuley@gmail.com\"> Created by bobpuley@gmail.com </a> </div> </div> </body> </html> Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 26 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 27: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Adeguiamo quindi il template Start.tml ● <t:border xmlns:t=\"http://tapestry.apache.org/schema/tapestry_5_0_0.xsd\"> Benvenuti nel mondo di Tapestry!<br /> E' stata renderizzata la pagina ${class.simpleName}! </t:border> Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 27 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 28: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License http://localhost:8080/jukeweb/ ● Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 28 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 29: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Ok, ora dovremmo avere acquisito un po' di ● confidenza col codice, ma il tutto è ancora statico Prima di tutto vediamo come fare a passare al ● Border i titoli per la finestra e per la pagina. Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 29 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 30: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Un parametro di un componente altro non è ● che un'attributo d'istanza opportunamente annotato (@Parameter) e corredato dei metodi accessor. Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 30 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 31: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Border.java (versione 2) ● package javaday.jukebox.web.components; import org.apache.tapestry.annotations.Parameter; public class Border { @Parameter(defaultPrefix=\"literal\") private String windowTitle = \"Untitled\"; @Parameter(defaultPrefix=\"literal\") private String pageTitle = \"Untitled\"; ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 31 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 32: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Border.java (versione 2) ● package javaday.jukebox.web.components; import org.apache.tapestry.annotations.Parameter; Binding prefix: public class Border { ● prop ● literal @Parameter(defaultPrefix=\"literal\") private String windowTitle = \"Untitled\"; ● asset ● block ● component @Parameter(defaultPrefix=\"literal\") ● traslate private String pageTitle = \"Untitled\"; ● Message ● validate ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 32 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 33: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Border.java (versione 2) ● ... public String getPageTitle() { return pageTitle; } public void setPageTitle(String pageTitle) { this.pageTitle = pageTitle; } public String getWindowTitle() { return windowTitle; } public void setWindowTitle(String windowTitle) { this.windowTitle = windowTitle; } } Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 33 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 34: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Adeguiamo quindi il template Start.tml ● <t:border pageTitle=\"Listen everything you want\" windowTitle=\"Home\" xmlns:t=\"http://tapestry.apache.org/schema/tapestry_5_0_0.xsd\"> Benvenuti nel mondo di Tapestry!<br /> E' stata renderizzata la pagina ${class.simpleName}! </t:border> Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 34 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 35: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License http://localhost:8080/jukeweb/ ● Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 35 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 36: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Gli Assets ● sono il meccanismo offerto da Tapestry per riferirsi – a risorse statiche Consentono di accedere a risorse presenti nel – classpath (default) o nel context root della web application Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 36 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 37: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Creiamo quindi ora in Border.java i riferimenti ● agli stylesheets, ai files javascript e al mp3 flash player Per farlo dobbiamo ● Dichiarare per ciascuna risorsa che vogliamo linkare – una variabile d'istanza di tipo org.apache.tapestry.Asset e il corrispondente metodo getter (il setter non occorre in quanto la risorsa è in sola lettura) Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 37 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 38: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License (continua) ● Annotare ciascuna delle variabili con – org.apache.tapestry.ioc.annotations.Inject Annotare ciascuna delle variabili con – org.apache.tapestry.annotations.Path (@Path(“context|classpath:path/risorsa.ext”)) Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 38 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 39: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Aggiungiamo a Border.java ● ... @Inject @Path(\"context:styles/layout.css\") private Asset layout; @Inject @Path(\"context:styles/header.css\") private Asset header; @Inject @Path(\"context:styles/menu.css\") private Asset menu; @Inject @Path(\"context:styles/body.css\") private Asset body; ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 39 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 40: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License (...continua) ● ... @Inject @Path(\"classpath:js/script.js\") private Asset script; @Inject @Path(\"classpath:js/audio-player.js\") private Asset playerScript; ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 40 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 41: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Aggiungiamo i metodi getter e modifichiamo il ● template ... <head> <title>${windowTitle}</title> <link rel=\"stylesheet\" href=\"${layout}\"></link> <link rel=\"stylesheet\" href=\"${header}\"></link> <link rel=\"stylesheet\" href=\"${menu}\"></link> <link rel=\"stylesheet\" href=\"${body}\"></link> <script src=\"${script}\" ></script> <script src=\"${playerScript}\" ></script> </head> ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 41 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 42: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Dopo aver salvato ed eseguito diamo uno ● sguardo al codice risultante ... <link href=\"/jukeweb/styles/layout.css\" rel=\"stylesheet\"> <link href=\"/jukeweb/styles/header.css\" rel=\"stylesheet\"> <link href=\"/jukeweb/styles/menu.css\" rel=\"stylesheet\"> <link href=\"/jukeweb/styles/body.css\" rel=\"stylesheet\"> <script src=\"/jukeweb/assets/js/script.js\"></script> <script src=\"/jukeweb/assets/js/audio-player.js\"></script> ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 42 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 43: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Creiamo un componente per il menù. ● Menu.java package javaday.jukebox.web.components; import org.apache.tapestry.annotations.OnEvent; public class Menu { @OnEvent(value=\"action\") String openPage(String pageName){ return pageName; } } Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 43 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 44: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Creiamo un componente per il menù. ● Menu.java package javaday.jukebox.web.components; import org.apache.tapestry.annotations.OnEvent; public class Menu { @OnEvent(value=\"action\") String openPage(String pageName){ return pageName; } } Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 44 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 45: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License E il template Menu.tml ● <div class=\"vocimenu\" xmlns:t=\"http://tapestry.apache.org/schema/tapestry_5_0_0.xsd\"> <div class=\"vocemenu\"> <a t:type=\"ActionLink\" context=\"literal:start\">Home</a> </div> <div class=\"login\"><t:login /></div> </div> Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 45 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 46: Creiamo un componente.. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License E il template Menu.tml ● <div class=\"vocimenu\" xmlns:t=\"http://tapestry.apache.org/schema/tapestry_5_0_0.xsd\"> <div class=\"vocemenu\"> <a t:type=\"ActionLink\" context=\"literal:start\">Home</a> </div> <div class=\"login\"><t:login /></div> </div> Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 46 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 47: Tapestry5 in action Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Creiamo un componente per il login/logout Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 47 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 48: Il componente login Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Passiamo ora a creare un componente che ● gestisca le operazioni di login/logout Al componente spettano la responsabilità di: ● esporre le operazioni opportune – Conoscere e gestire il comportamento – dell'applicazione al momento del login/logout Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 48 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 49: Il componente login Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Login.java ● package javaday.jukebox.web.components; ... public class Login { @Persist private String _userName; private String _password; @Component(id = \"password\") private PasswordField _passwordField; @Component(id=\"loginForm\") private Form _form; ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 49 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 50: Il componente login Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Login.java ● package javaday.jukebox.web.components; ... public class Login { @Persist private String _userName; private String _password; @Component(id = \"password\") private PasswordField _passwordField; @Component(id=\"loginForm\") private Form _form; ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 50 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 51: Il componente login Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Login.java ● package javaday.jukebox.web.components; ... public class Login { @Persist private String _userName; private String _password; @Component(id = \"password\") private PasswordField _passwordField; @Component(id=\"loginForm\") private Form _form; ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 51 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 52: Il componente login Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License (... continua) ● ... @OnEvent(component=\"loginForm\",value=\"success\") void login() { boolean valid = false; if(!valid){ _form.recordError(_passwordField, \"Invalid user name or password.\"); } } @OnEvent(component=\"logout\",value=\"action\") void logout() { } ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 52 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 53: Il componente login Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License (... continua) ● ... @OnEvent(component=\"loginForm\",value=\"success\") void login() { boolean valid = false; if(!valid){ _form.recordError(_passwordField, \"Invalid user name or password.\"); } } @OnEvent(component=\"logout\",value=\"action\") void logout() { } ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 53 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 54: Il componente login Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License (... continua) ● ... @OnEvent(component=\"loginForm\",value=\"success\") void login() { boolean valid = false; if(!valid){ _form.recordError(_passwordField, \"Invalid user name or password.\"); } } @OnEvent(component=\"logout\",value=\"action\") void logout() { } ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 54 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 55: Il componente login Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License (... continua) ● ... public String getPassword() { return _password; } public void setPassword(String _password) { this._password = _password; } public String getUserName() { return _userName; } public void setUserName(String name) { _userName = name; } } Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 55 Tapestry5 in action Javaday Roma - 01/12/2007
Slide 56: Il componente login Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Login.tml ● <t:container xmlns:t=\"http://tapestry.apache.org/schema/tapestry_5_0_0.xsd\"> <div class=\"formLogin\"> <t:form t:id=\"loginForm\"> <div class=\"title\">Login</div> <t:errors /> <label t:type=\"label\" t:for=\"userName\" class=\"label\"> user </label> <div class=\"element\"> <t:textField t:id=\"userName\" t:value=\"userName\" t:validate=\"required\" /> </div> ... Marco Pugliese - bobpuley@gmail.com – Java Italian Portal 56 Tapestry5 in action Jav


Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 0 (more)