Introduction au framework Wicket

1. Vue d'ensemble

Wicket est un framework orienté composants Web côté serveur Java qui vise à simplifier la création d'interfaces Web en introduisant des modèles connus du développement de l'interface utilisateur de bureau.

Avec Wicket, il est possible de créer une application Web en utilisant uniquement du code Java et des pages HTML compatibles XHTML. Pas besoin de Javascript, ni de fichiers de configuration XML.

Il fournit une couche sur le cycle de demande-réponse, empêchant de travailler à un bas niveau et permettant aux développeurs de se concentrer sur la logique métier.

Dans cet article, nous présenterons les bases en construisant l' application HelloWorld W icket, suivi d'un exemple complet utilisant deux composants intégrés qui communiquent entre eux.

2. Configuration

Pour exécuter un projet Wicket, ajoutons les dépendances suivantes:

 org.apache.wicket wicket-core 7.4.0 

Vous voudrez peut-être consulter la dernière version de Wicket dans le référentiel Maven Central, qui au moment de votre lecture peut ne pas coïncider avec celle utilisée ici.

Nous sommes maintenant prêts à créer notre première application Wicket.

3. HelloWorld Wicket

Commençons par sous- classer la classe WebApplication de Wicket , qui, au minimum, nécessite de surcharger la méthode Class getHomePage () .

Wicket utilisera cette classe comme point d'entrée principal de l'application. Dans la méthode, il suffit de retourner une classe objet d'une classe nommée HelloWorld:

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

Wicket préfère la convention à la configuration. L'ajout d'une nouvelle page Web à l'application nécessite la création de deux fichiers: un fichier Java et un fichier HTML avec le même nom (mais une extension différente) dans le même répertoire. Une configuration supplémentaire n'est nécessaire que si vous souhaitez modifier le comportement par défaut.

Dans le répertoire du package du code source, ajoutez d'abord HelloWorld.java :

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

puis HelloWorld.html :

Enfin, ajoutez la définition de filtre dans le fichier web.xml:

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

C'est ça. Nous venons de coder notre première application Web Wicket.

Exécutez le projet en créant un fichier war ( package mvn à partir de la ligne de commande) et déployez-le sur un conteneur de servlet tel que Jetty ou Tomcat.

Accédons à // localhost: 8080 / HelloWorld / dans le navigateur. Une page vide avec le message Hello World! apparaîtra.

4. Composants du guichet

Les composants de Wicket sont des triades constituées d'une classe Java, du balisage HTML et d'un modèle. Les modèles sont une façade que les composants utilisent pour accéder aux données.

Cette structure offre une belle séparation des problèmes et en découplant le composant des opérations centrées sur les données, augmente la réutilisation du code.

L'exemple qui suit montre comment ajouter un comportement Ajax à un composant. Il se compose d'une page avec deux éléments: un menu déroulant et une étiquette. Lorsque la sélection déroulante change, l'étiquette (et seulement l'étiquette) sera mise à jour.

Le corps du fichier HTML CafeSelector.html sera minimal, avec seulement deux éléments, un menu déroulant et une étiquette:

Address: address

Côté Java, créons l'étiquette:

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

Le premier argument du constructeur Label correspondant au wicket: id attribué dans le fichier HTML. Le deuxième argument est le modèle du composant, un wrapper pour les données sous-jacentes qui sont présentées dans le composant.

La méthode setOutputMarkupId rend le composant éligible à la modification via Ajax. Créons maintenant la liste déroulante et ajoutons-y le comportement Ajax:

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); } });

La création est similaire à celle de l'étiquette, le constructeur accepte l'identifiant du guichet, un modèle et une liste de noms de cafés.

Ensuite AjaxFormComponentUpdatingBehavior est ajouté à la onUpdate méthode de rappel qui met à jour le modèle de l'étiquette une fois ajax demande est émise. Enfin, le composant d'étiquette est défini comme cible pour l'actualisation.

Enfin, le composant d'étiquette est défini comme cible pour l'actualisation.

Comme vous pouvez le voir, tout est Java, pas une seule ligne de Javascript n'était nécessaire. Afin de changer ce que l'étiquette affiche, nous avons simplement modifié un POJO. Le mécanisme par lequel la modification d'un objet Java se traduit par une modification de la page Web se produit derrière les rideaux et n'est pas pertinent pour le développeur.

Wicket propose un grand ensemble de composants compatibles AJAX prêts à l'emploi. Le catalogue des composants avec des exemples en direct est disponible ici.

5. Conclusion

Dans cet article d'introduction, nous avons couvert les bases de Wicket, le framework Web basé sur des composants en Java.

Wicket fournit une couche d'abstraction qui vise à supprimer entièrement le code de plomberie.

Nous avons inclus deux exemples simples, que vous pouvez trouver sur GitHub, pour vous donner un avant-goût de ce à quoi ressemble le développement avec ce framework.