Einführung in das Wicket Framework

1. Übersicht

Wicket ist ein serverseitiges Java-Webkomponenten-Framework, das darauf abzielt, das Erstellen von Webschnittstellen zu vereinfachen, indem Muster eingeführt werden, die aus der Entwicklung der Desktop-Benutzeroberfläche bekannt sind.

Mit Wicket ist es möglich, eine Webanwendung nur mit Java-Code und XHTML-kompatiblen HTML-Seiten zu erstellen. Keine Notwendigkeit für Javascript oder XML-Konfigurationsdateien.

Es bietet eine Ebene über den Anforderungs- / Antwortzyklus, schützt vor Arbeiten auf niedriger Ebene und ermöglicht Entwicklern, sich auf die Geschäftslogik zu konzentrieren.

In diesem Artikel werden die Grundlagen vorgestellt, indem die HelloWorld W icket-Anwendung erstellt wird, gefolgt von einem vollständigen Beispiel mit zwei integrierten Komponenten, die miteinander kommunizieren.

2. Setup

Fügen Sie zum Ausführen eines Wicket-Projekts die folgenden Abhängigkeiten hinzu:

 org.apache.wicket wicket-core 7.4.0 

Möglicherweise möchten Sie die neueste Version von Wicket im Maven Central-Repository überprüfen, die zum Zeitpunkt Ihrer Lektüre möglicherweise nicht mit der hier verwendeten übereinstimmt.

Jetzt können wir unsere erste Wicket-Anwendung erstellen.

3. HelloWorld Wicket

Beginnen wir mit der Unterklasse der WebApplication- Klasse von Wicket , für die mindestens das Überschreiben der Methode getHomePage () der Klasse erforderlich ist .

Wicket verwendet diese Klasse als Haupteinstiegspunkt für die Anwendung. Geben Sie innerhalb der Methode einfach ein Klassenobjekt einer Klasse mit dem Namen HelloWorld zurück:

public class HelloWorldApplication extends WebApplication { @Override public Class getHomePage() { return HelloWorld.class; } }

Wicket bevorzugt Konventionen gegenüber Konfigurationen. Zum Hinzufügen einer neuen Webseite zur Anwendung müssen zwei Dateien erstellt werden: eine Java-Datei und eine HTML-Datei mit demselben Namen (aber unterschiedlicher Erweiterung) unter demselben Verzeichnis. Eine zusätzliche Konfiguration ist nur erforderlich, wenn Sie das Standardverhalten ändern möchten.

Fügen Sie im Paketverzeichnis des Quellcodes zuerst die Datei HelloWorld.java hinzu :

public class HelloWorld extends WebPage { public HelloWorld() { add(new Label("hello", "Hello World!")); } }

dann HelloWorld.html :

Fügen Sie als letzten Schritt die Filterdefinition in die Datei web.xml ein:

 wicket.examples  org.apache.wicket.protocol.http.WicketFilter   applicationClassName  com.baeldung.wicket.examples.HelloWorldApplication   

Das ist es. Wir haben gerade unsere erste Wicket-Webanwendung codiert.

Führen Sie das Projekt aus, indem Sie eine War- Datei ( MVN-Paket über die Befehlszeile) erstellen und auf einem Servlet-Container wie Jetty oder Tomcat bereitstellen.

Greifen wir im Browser auf // localhost: 8080 / HelloWorld / zu. Eine leere Seite mit der Nachricht Hallo Welt! soll erscheinen.

4. Wicket-Komponenten

Komponenten in Wicket sind Triaden, die aus einer Java-Klasse, dem HTML-Markup und einem Modell bestehen. Modelle sind eine Fassade, über die Komponenten auf die Daten zugreifen.

Diese Struktur bietet eine gute Trennung von Bedenken und erhöht durch die Entkopplung der Komponente von datenzentrierten Operationen die Wiederverwendung von Code.

Das folgende Beispiel zeigt, wie Sie einer Komponente Ajax-Verhalten hinzufügen. Es besteht aus einer Seite mit zwei Elementen: einem Dropdown-Menü und einer Beschriftung. Wenn sich die Dropdown-Auswahl ändert, wird das Etikett (und nur das Etikett) aktualisiert.

Der Hauptteil der HTML-Datei CafeSelector.html ist minimal und besteht aus nur zwei Elementen, einem Dropdown-Menü und einer Bezeichnung:

Address: address

Erstellen wir auf der Java-Seite das Label:

Label addressLabel = new Label("address", new PropertyModel(this.address, "address")); addressLabel.setOutputMarkupId(true);

Das erste Argument im Label- Konstruktor, das mit der in der HTML-Datei zugewiesenen wicket: id übereinstimmt . Das zweite Argument ist das Modell der Komponente, ein Wrapper für die zugrunde liegenden Daten, die in der Komponente dargestellt werden.

Mit der setOutputMarkupId- Methode kann die Komponente über Ajax geändert werden. Lassen Sie uns nun die Dropdown-Liste erstellen und das Ajax-Verhalten hinzufügen:

DropDownChoice cafeDropdown = new DropDownChoice( "cafes", new PropertyModel(this, "selectedCafe"), cafeNames); cafeDropdown.add(new AjaxFormComponentUpdatingBehavior("onchange") { @Override protected void onUpdate(AjaxRequestTarget target) { String name = (String) cafeDropdown.getDefaultModel().getObject(); address.setAddress(cafeNamesAndAddresses.get(name).getAddress()); target.add(addressLabel); } });

Die Erstellung ähnelt der des Labels. Der Konstruktor akzeptiert die Wicket-ID, ein Modell und eine Liste mit Cafénamen.

Anschließend wird AjaxFormComponentUpdatingBehavior mit der Rückrufmethode onUpdate hinzugefügt, mit der das Modell des Etiketts aktualisiert wird, sobald eine Ajax-Anforderung ausgegeben wird. Schließlich wird die Beschriftungskomponente als Ziel für die Aktualisierung festgelegt.

Schließlich wird die Beschriftungskomponente als Ziel für die Aktualisierung festgelegt.

Wie Sie sehen können, ist alles Java, es war keine einzige Zeile Javascript erforderlich. Um die Anzeige auf dem Etikett zu ändern, haben wir einfach ein POJO geändert. Der Mechanismus, mit dem das Ändern eines Java-Objekts zu einer Änderung der Webseite führt, findet hinter den Kulissen statt und ist für den Entwickler nicht relevant.

Wicket bietet eine große Auswahl an AJAX-fähigen Komponenten. Den Katalog der Komponenten mit Live-Beispielen finden Sie hier.

5. Schlussfolgerung

In diesem Einführungsartikel haben wir die Grundlagen von Wicket, dem komponentenbasierten Webframework in Java, behandelt.

Wicket bietet eine Abstraktionsebene, die darauf abzielt, den Installationscode vollständig zu beseitigen.

Wir haben zwei einfache Beispiele beigefügt, die auf GitHub zu finden sind, um Ihnen einen Eindruck davon zu geben, wie die Entwicklung mit diesem Framework aussieht.