Wicket : déterminer le chemin vers une ressource

En Wicket, tout est tellement automatisé que l’on oublie vite à quel point ses mécanismes nous simplifient la vie !
Besoin de créer un lien ? Il suffit de passer en paramètre de la méthode « setResponsePage » la classe de la page et c’est fait :

  1. this.add(new Link(« linkID ») {
  2. @Override
  3. public void onClick() {
  4. this.setResponsePage(MaPage.class);
  5. }
  6. });


Envie d’insérer une image ? Copiez-la dans le répertoire de l’application, ajoutez une « ResourceReference » puis insérez l’image avec le markup associé et le tour est joué : Wicket se chargera pour vous de retrouver l’image adéquate !

  1. ResourceReference image = new ResourceReference(MyClass.class, « myImage.png »);
  2. myPage.add(new Image(« imageID », image));
  1. <image src=«  » wicket:id=« imageID »/>

Hélas, tout n’est pas Wicket et il faut parfois recourir à d’autres langages comme, par exemple, JavaScript. Dans pareil cas, vous pouvez avoir besoin de connaître « textuellement » l’URL d’une page ou d’une image afin de pouvoir y faire référence. C’est ce que vous propose la méthode « urlFor() »

Adresses des Ressources

On souhaite obtenir l’adresse d’une ResourceReference associée à l’image « myImage.png » .
Cette image étant une ressource au sens Wicket, elle sera déployée dans le répertoire protégé « WEB-INF/classes », et sera donc inaccessible directement. Pour contourner cette restriction, Wicket propose un mapping spécial (« /resources ») mais les bonnes pratiques de développement nous interdisent de l’utiliser explicitement. Il faut donc user du subterfuge suivant :

  1. String imagePath = RequestCycle.get().urlFor(image).toString();

… qui va renvoyer (par exemple) : « http://localhost:8080/wicketApp/resources/<myPackageName>.<myClassName>/myImage.png »

Adresse des pages

De la même façon, on peut obtenir l’adresse d’une page :

  1. String pagePath = parent.urlFor(myPage.class, new PageParameters()).toString();

… va renvoyer la String permettant d’accéder à la page recherchée.
Avec Wicket, tout est simple !

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

%d blogueurs aiment cette page :