Sites


Lutece : guide développeur

Le moteur de templates : Freemarker

Le moteur de templates Freemarker est utilisé pour toute la production des pages HTML des AdminFeatures (Back Office) et des XPages (Front).

Ce moteur permet de remplir des variables situées dans un modèle de page HTML appelé Template HTML. Les données servant à la valorisation du template sont fournies au travers d'un objet Java de type Map communément appelé model.

Voici un exemple très simple d'utilisation de ce framework.

Code Java

Dans le code Java, nous allons construire un "model" contenant un objet Person. Il s'agit donc de créer un objet de type Map, contenant une entrée dont la clé vaut "person" et la valeur est une instance de la classe Person.

Le model est transmit, accompagné du modèle de page (template) et de la locale (pour l'i18n), au Service de Template de Lutece  AppTemplateService qui fournira en retour un objet HtmlTemplate contenant le HTML valorisé.

La récupération du code HTML produit se fait par la méthode getHtml().

// Use constants for templates and markers
 private static final String TEMPLATE = «template.html»;
 private static final String MARK_PERSON = «person»;


 …
 Map<String,String> model = new  HashMap<String,String>();
 Person person = new Person();
 Person.setFirstName( «John» );
 Person.setLastName( «Doe» );
 Model.put( MARK_PERSON , person );
 HtmlTemplate t = AppTemplateService.getTemplate( TEMPLATE, locale , model );
 t.getHtml();

Code HTML


Du côté HTML, nous pouvons utiliser l'objet "person" (clé de la Map du model) et accéder aux atrributs de la classe "Person" (objet associé à la clé) de la manière suivante :

 <b>First name : </b> ${person.firstName} <br/>
 <b>Last name : </b> ${person.lastName} <br/>

Il s'agit là d'un exemple très simple et très courant de Freemarker. Ce framework permet de faire énormément de manipulation de données au niveau des templates. Nous vous invitons vivement à consulter le site http://freemarker.org/ pour vous rendre compte de l'ensemble des possibilités offertes par cet outil.

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.