Thursday, September 13, 2007

Componenti in Wicket

Come abbiamo già detto Wicket consente lo sviluppo per componenti e di componenti HTML. L'architettura di Wicket prevede che un componente venga descritto tramite 3 tipologie di entità:

  • il component (java)
  • il model (java)
  • il markup (html)
L'interazione dei tre consente lo sviluppo di una entità completa, autonoma e riusabile tramite i costrutti nativi di Java. Fondamentalmente la parte component serve a rienpire dinamicamente alcune aree del markup utilizzando come valori i dati contenuti nel model.
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
Some example page
</title>
</head>
<body>
<span wicket:id="messaggio">
[message here]
</span>
</body>
l'area wicked:id indica al parser di ricercare un componente registratosi come "messaggio" all'interno della pagina. Questo rappresenta il component.
public class Hello extends WebPage {
   public Hello() {
       add(new Label("messaggio", "Mondo Wicket"));
   }
}
In questo caso è stato anche specificato il model, definito dalla stringa "Mondo Wicket". In altri casi, come vedremo, il model è una classe a sè che implementa l'interfaccia IModel. L'idea interessante proposta da Wicket è di usare una unica istanza della classe Component (o Page in questo caso) relegando il suo stato in un'altra classe (il Model) che viene gestito automaticamente dall'infrastruttura. La parte di markup viene usata soltanto per il rendering e l'utilizzo unicamente di attributi per l'associazione con la parte component fa sì che la pagina possa essere efficacemente editata con un qualsiasi editor html, senza richiedere particolari funzionalità.