Projets
Pages enfant
  • 1.9.2 Facelet

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Facelet est une technologie JSF permettant de créer des templates (ou modèlemodèles) et d'utiliser ces templates dans les vues de l'application.

Le but est de factoriser les éléments communs à un ensemble de pages qu'on déclarera plutôt dans une page unique, appelée template. Les pages utilisent alors le template comme structure et y injectent leur contenu spécifique.

Intérêts :

  • Eviter les duplication duplications de code et faciliter son maintien
  • Améliorer la visibilité des pages puisque chaque page ne présentera que ce qui lui est propre
  • Avoir un une structuration de page uniforme dans toute l'application

Fonctionnement

Déclaration

Dans JSF 1.2, on indique à JSF d'utiliser Facelets comme gestionnaire de vues. Pour cela, on ajoute dans /webapp/WEB-INF/jsp/faces-config.xml

...

Bloc de code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:t="http://myfaces.apache.org/tomahawk">
<head>
  <title><ui:insert name="titre" /></title>
</head>

<body>
    <p>
     <ui:insert name="contenu" />
    </p>
</body>
</html>

Les balises <uiui:insert indiquent les endroits où le code spécifique pourra être injecté.

...

Bloc de code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html">

<ui:composition template="/template.xhtml">
<ui:define name="titre">Titre de ma page</ui:define>

<ui:define name="contenu">
  	Texte, formulaires etc.
</ui:define>
</ui:composition>
</html>

La balise <uiui:composition indique le template qui va être utilisé.
Les balises <uiui:define

Résultat obtenu :

Bloc de code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:t="http://myfaces.apache.org/tomahawk">
<head>
  <title>Titre de ma page</title>
</head>
<body>
    <p>
     Texte, formulaires etc.
    </p>
</body>
</html>

...

Bloc de code
	<context-param>
		<param-name>facelets.LIBRARIES</param-name>
		<param-value>/WEB-INF/esup-commons.taglib.xml 
		</param-value>
	</context-param>

...