Système d'inclusion en JSF
Pour éviter les erreurs, voici un rapide rappel pour faire de l'inclusion de pages en JSF. Cet article contient un exemple de code classique, puis quelques points à ne pas oublier pour que tout se passe bien.
Le but de cet exemple sera d'avoir une page
Et voilà le résultat (en HTML) :
Martin en parle également.
Le but de cet exemple sera d'avoir une page
index.jsp qui inclue une page content.jsp.
index.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!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>JSP Page</title>
</head>
<body>
<f:view>
<f:subview id="content">
<jsp:include page="content.jsp" flush="false" />
</f:subview>
</f:view>
</body>
</html>
content.jsp
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <h:outputText value="Ceci est le contenu !" />
Points importants
Il existe quelques règles assez importantes pour que ce système d'inclusion de page marche correctement :- Dans la page de base, entourer l'inclusion avec une balise
<f:subview /> - Lors de l'inclusion, penser à mettre l'attribut
flushàfalse. Cet attribut existe sur la plupart des balises permettant l'inclusion de pages. - Dans la page de destination, réutiliser les composants JSF directement, sans remettre de balise
<f:view /> - Les taglibs doivent quand à elles être réimportées.
Et voilà le résultat (en HTML) :
<!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>JSP Page</title>
</head>
<body>
Ceci est le contenu !
</body>
</html>
Martin en parle également.