Dans le post précédent je vous parlais d’arborescence et d’id unique.

Nous allons faire un petit focus sur ce sujet en particulier pour bien comprendre comment Wicket gère cet enchevêtrement de composants.


Par la même occasion, nous allons introduire un nouveau composant, le [ExternalLink] qui permet d’ajouter un lien vers une URL particulière.

Reprenez la classe [HelloPage.java] et modifiez la comme suit :

package com.noocodecommit.wicket.helloworld.wicket.pages;
 
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
 
public class HelloPage extends WebPage
{
	public HelloPage()
	{
		add(new Label("lblHello", "Salut le monde!!!"));
 
		ExternalLink lienSite = new ExternalLink("lnkSite", "http://www.noocodecommit.com/blog/nicogiard");
 
		Label label = new Label("lblHello", "NooCodeCommit");
 
		lienSite.add(label);
 
		add(lienSite);
	}
}

Reprenez le fichier [HelloPage.html] et modifiez le avec :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<title>Ma premiere application Wicket</title>
</head>
<body>
	<h1 wicket:id="lblHello">[ce qui se trouve ici ne sera pas affiché]</h1>
	<a wicket:id="lnkSite"><span wicket:id="lblHello">[ce qui se trouve ici ne sera pas affiché]</span></a>
</body>
</html>

On voit ici que la balise [a] contient une balise [span] dans son contenu. De plus, la balise [a] n’a en aucune façon d’informations concernant la destination (href). Celle-ci sera ajoutée par Wicket.

« Ben, il avait dit que les id doivent être uniques… »

Effectivement, les plus attentifs auront surement remarqué que nous avons ajouté deux [Label] avec l’id [lblHello]. Oui mais voilà !

La notion d’arborescence rentre en jeu. Cette hiérarchie de composants pourrait être perçue de la façon suivante :

  • page
    • lblHello
    • lnkSite
      • lblHello

En fait, Wicket identifie chaque composant par le couple « arborescence + id ». Ce qui nous fait dans notre exemple que [lblHello] est différent de [lnkSite.lblHello].
Ce sont donc bien deux composants distincts qui ont chacun leurs comportements et des données qui leurs sont propres.

Les sources du projet se trouvent ici.

Imprimer cet article Imprimer cet article

 Leave a Reply

(required)

(required)


× 4 = thirty six

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

   
© 2011 NooCodeCommit Suffusion theme by Sayontan Sinha