10. Wie geht das? Java + HTML <h1 wicket:id=“subject“>Ein statischer Text</h1>
11. Wie geht das? Java + HTML <h1 wicket:id=“subject“>Ein statischer Text</h1> + add(new Label(„subject“, „Hallo, Welt“));
12. Wie geht das? Java + HTML <h1 wicket:id=“subject“>Ein statischer Text</h1> + add(new Label(„subject“, „Hallo, Welt“)); = <h1>Hallo, Welt</h1>
13. Wie geht das? Java + HTML <h1 wicket:id=“ subject “>Ein statischer Text</h1> + add(new Label(„ subject “, „Hallo, Welt“)); = <h1>Hallo, Welt</h1>
14. Wie geht das? Java + HTML <h1 wicket:id=“subject“> Ein statischer Text </h1> + add(new Label(„subject“, „ Hallo, Welt “)); = <h1> Hallo, Welt </h1>
15. Pures HTML Designer freundlich Sie müssen keine neue Sprache lernen Kein serverseitiges Scripting im Markup Entwickler „pfuschen“ nicht ins Design Designer „pfuschen“ nicht in den Code
16. No JSP - Yeah <html> <head> <title>Author of book from ISBN number</title> </head> <body> <h1> Result page</h1> <jsp:useBean id="fred" class="boox.Book" /> <jsp:setProperty name="fred" property="*" /> <% if (fred.getAuthor().equals("numerous")) { %> That is not an ISBN number on our database<br> <% } else { %> Author is <jsp:getProperty name="fred" property="auth" /> <br> <% } %> Done! </body>
21. Agenda Was ist Wicket Wicket Konzepte Eine Wicket Anwendung Testen Fragen
22. Wicket Konzept Wicket präsentiert dem Entwickler ein Single Threaded, komponentenorientiertes Entwicklungsmodell Ähnlich wie Entwicklung mit Swing Nur macht das ganze mit Wicket auch Spaß
61. Komponenten Eigenschaften Jede Komponente hat eine ID (wicket:id) Jede Wicket ID muss auch im Markup vorhanden sein (wird im Entwicklungsmodus geprüft) Die Komponentenhierarchie muss übereinstimmen Kann ein Modell hinterlegt haben
62. Komponenten Eigenschaften Komponenten können verschachtelt sein <a href=“#“ wicket:id=“link“> <span wicket:id=“msg“>ein text</span> </a> Link link = new Link(„link“) {...}; add(link); link.add(new Label(„msg“,“Ein Text“));
63. Komponenten Eigenschaften Komponenten können verschachtelt sein <a href=“#“ wicket:id=“link“ > <span wicket:id=“msg“>ein text</span> </a> Link link = new Link(„ link “) {...}; add(link); link.add(new Label(„msg“,“Ein Text“));
64. Komponenten Eigenschaften Komponenten können verschachtelt sein <a href=“#“ wicket:id=“link“> <span wicket:id=“msg“ >ein text</span> </a> Link link = new Link(„link“) {...}; add(link); link.add (new Label(„ msg “,“Ein Text“));
72. Wicket Behaviors Sind „Decorators“ von Komponenten Können die Komponenten Tags ändern Können JavaScript Events zu Komponenten hinzufügen Können Ajax Verhalten zu Komponenten hinzufügen Sehr nützlich im Zusammenspiel mit JavaScript Bibliotheken wie jQuery
73. Wicket Behaviors Beispiel link.add(new AbstractBehaviour() { public void onComponentTag(Component component, ComponentTag tag) { tag.put(„ onclick “, „ return conform('Sind sie sicher?'); “); } }); => <a href=“#“ onclick =“ return conform('Sind sie sicher?'); “>Gefährliche Aktion</a>
80. Model – View – Controller Modelle erlauben es Komponenten Daten zu speichern und anzuzeigen Modelle verbinden Komponenten mit POJO's Komponente Markup Modell
81. POJO Inhalt in die Komponenten new Label(„lastName“, person.getLastName()); Langweilig und kein „Binding“ oder new Label(„plz“, person.getAddress().getZip()); Nicht NPE fest und kein „Binding“
82.
83.
84. Bindgen und Wicket Modell: public class Address { public String city; } @Bindable public class Person { public Address address; } Und das Binding: add ( new Label ( "city" , BindingModel. of ( personModel, new PersonBinding () . address () . city ())) ; Stabil bei Refactoring!
85. Agenda Was ist Wicket Wicket Konzepte Eine Wicket Anwendung Testen Fragen
86. Wicket Anwendungen Testen Komponenten können direkt (Code) oder über das Markup getestet werden Test können ohne Server ausgeführt werden Ajax kann getestet werden (die Server Seite) Tests können in der IDE oder in Ant und Maven builds laufen Hohe Testfallabdeckung möglich!
87. Hello, World testen public class HelloPageTest { @Test public void testHelloWorldLabel() { WicketTester tester = new WicketTester(); tester.startPage(HelloPage. class ); tester.assertLabel( "msg" , "Hello, World!" ); } }
93. Formulare Testen Eigene Utility Klasse „FormTester“ Mit FormTester kann man einen User und dessen Eingaben simulieren. Felder können gesetzt werden Ein Formular kann abgeschickt und das Ergebnis (Errors, Messages, Zielseiten) abgefragt werden
96. Gerhard Hipfinger [email_address] openForce Information Technology GesmbH Dresdner Str. 108 / 3. Stock / Top 11 1200 Wien +43 1 3191775 www.openforce.com Das wars :)