Your SlideShare is downloading. ×
Wicket Kurzübersicht
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Wicket Kurzübersicht

3,186

Published on

Folien zu meinem Vortrag beim JUGAT Meeting am 3. März 2010.

Folien zu meinem Vortrag beim JUGAT Meeting am 3. März 2010.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,186
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Apache Wicket Gerhard Hipfinger [email_address]
  • 2. Agenda Was ist Wicket Wicket Konzepte Eine Wicket Anwendung Testen Fragen
  • 3. Agenda Was ist Wicket Wicket Konzepte Eine Wicket Anwendung Testen Fragen
  • 4. Wicket ist... … ein Web Framework … komponentenorientiert … nur Java & HTML … ein Open Source Projekt (Apache)
  • 5. Wicket Highlights
    • Ausschliesslich Java und HTML
    • 6. Keine XML Konfiguration
    • 7. Objektorientierte Programmierung im Web
    • 8. Einfaches erstellen eigener Komponenten
    • 9. Sehr aktive Community
  • 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=&quot;fred&quot; class=&quot;boox.Book&quot; /> <jsp:setProperty name=&quot;fred&quot; property=&quot;*&quot; /> <% if (fred.getAuthor().equals(&quot;numerous&quot;)) { %> That is not an ISBN number on our database<br> <% } else { %> Author is <jsp:getProperty name=&quot;fred&quot; property=&quot;auth&quot; /> <br> <% } %> Done! </body>
  • 17. No JSP - Yeah <%@ taglib uri=&quot;http://java.sun.com/jsf/html&quot; prefix=&quot;h&quot; %> <%@ taglib uri=&quot;http://java.sun.com/jsf/core&quot; prefix=&quot;f&quot; %> <f:loadBundle basename=&quot;jsfks.bundle.messages&quot; var=&quot;msg&quot;/> <html> <head> <title>enter your name page</title> </head> <body> <f:view> <h1> <h:outputText value=&quot;#{msg.inputname_header}&quot;/> </h1> <h:form id=&quot;helloForm&quot;> <h:outputText value=&quot;#{msg.prompt}&quot;/> <h:inputText value=&quot;#{personBean.personName}&quot; /> <h:commandButton action=&quot;greeting&quot; value=&quot;#{msg.button_text}&quot; /> </h:form> </f:view> </body> </html>
  • 18. (Fast) Pures HTML <div wicket:id=&quot;feedback&quot;></div> <form wicket:id=&quot;form&quot; class=&quot;cmxform&quot;> <fieldset> <legend>Erfassung</legend> <ol> <li> <label>Benutzer</label> <input wicket:id=&quot;benutzer.email&quot; type=&quot;text&quot;/> </li> <li> <label>Start</label> <input wicket:id=&quot;start&quot; type=&quot;text&quot;/> </li> </ol>
  • 19. Wicket als Apache Projekt Wicket gibt es seit 2004 Seit 2007 ein Apache Projekt Mittlerweile Top Level Projekt
    • http://wicket.apache.org
    Aktuell ist Version 1.4.6 Die Arbeit an 1.5 ist voll im Gange
  • 20. Wicket verwenden < dependency > < groupId > org.apache.wicket </ groupId > < artifactId > wicket </ artifactId > < version > 1.4.6 </ version > </ dependency >
  • 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ß
  • 23. Wicket Bestandteile
  • 29. Wicket Bestandteile
  • 35. Application
    • Einstiegspunkt in die Anwendung
    • 36. Initialisierung
      • Spring
      • 37. Autorisierung
    • Festlegen der Startseite
    • 38. Wird in der web.xml Datei festgelegt
    • 39. Grundsätzlich: Konfiguration über die API anstatt in XML Dokumenten
  • 40. Wicket Bestandteile
  • 46. Wicket Bestandteile
  • 52. Wicket Request Lifecycle parameters page component version interface event listener ajax listener page resource ... onClick onSubmit . . render page components resource redirect detach store page
  • 53. Wicket Bestandteile
  • 59. Wicket Komponenten Komponenten Kapseln das Markup von der fachlichen Implementierung Rendern ihren Inhalt beim Response Empfangen Events beim Request Es gibt reichlich Komponenten
    • im Wicket Core
    • 60. in der Open Source Szene
  • 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“));
  • 65. Komponenten & Events
    • Komponenten können auf Ereignisse reagieren public class BenutzerForm extends Form { public BenutzerForm(String id, Benutzer b) { super(id, new Model(b)); } public void onSubmit() { benutzer.save(); setResponsePage(new BenutzerListePage()); } }
  • 66. Wicket Bestandteile
  • 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>
  • 74. Wicket Bestandteile
  • 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. Verwendung von Modellen
    • PropertyModel
      • new PropertyModel(p, „firstName“)
      • 83. new PropertyModel(p, „address“, „zip“)
    • CompoundPropertyModel
      • setModelObject(new CompoundPropertyModel(p)); add(new Label(„firstName)); add(new Label(„address.zip“));
    Auch Böse -> Refactoring!
  • 84. Bindgen und Wicket Modell: public class Address { public String city; } @Bindable public class Person { public Address address; } Und das Binding: add ( new Label ( &quot;city&quot; , 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( &quot;msg&quot; , &quot;Hello, World!&quot; ); } }
  • 88. Wicket Anwendungen testen Das ganze Geheimnis liegt in der Klasse „WicketTester“ WicketTester simuliert die Server Laufzeitumgebung Testen von
  • 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
  • 94. Das erste Hello, World! DEMO
  • 95. Fragen? Fragen & Antworten
  • 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 :)

×