Bonjour,
je suis en train de me former au développement web avec les techniques JSF et facelets et
j'ai une question concernant la composition.
Je veux définir un menu en début de session et le conserver lorsque l'on change de page ( partie "variable"). Je suis partie sur l'idée suivante, avoir un menu "menu.xhtml" dont toutes les options sont à rendered=false et de les passer à true par programme suivant le user dans un managed bean session. Problème cela marche si je ne change pas de page. Il semble qu'il reconstruise entièrement la page et reparte du fichier menu.xhtml sans tenir compte des modifs faîtes par programme??
Est-ce que c'est un problème de définition des templates ou est-ce le fonctionnement normal de facelets?
merci pour vos suggestions.
template main.xhtml
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="css/ggc.css" rel="stylesheet" type="text/css" />
<title><ui:insert name="pageTitle">Page Title</ui:insert></title>
</head>
<body>
<div id="header">
<div class="panel">
<ui:include src="./header.xhtml" > page header</ui:include>
</div>
</div>
<div id="topbar">
<div class="panel">
<ui:insert name="topbar">Topbar</ui:insert>
</div>
</div>
<div>
<div id="sidebar">
<div class="panel">
<ui:insert name="sidebar">Sidebar</ui:insert>
</div>
</div>
<div id="body" style="text-align: center;">
<div class="panel">
<ui:insert name="body">Body</ui:insert>
</div>
</div>
</div>
<div id="footer">
<div class="panel">
<ui:include src="./footer.xhtml" > Footer</ui:include>
</div>
</div>
</body>
</html>
Template navigation.xhtml :
<ui:composition template="/main.xhtml">
<div>
<ui:define name="pageTitle">
<ui:insert name="pageTitle">Page Title</ui:insert>
</ui:define>
</div>
<div>
<ui:define name="topbar">
<ui:include src="#{navigation.barRoles}">Bar Actors</ui:include>
</ui:define>
</div>
<ui:define name="sidebar">
<ui:include src="#{navigation.menuRoleCourant}">Side Menu</ui:include>
</ui:define>
<div>
<ui:define name="body">
<ui:insert name="body">Page Content</ui:insert>
</ui:define>
</div>
</ui:composition>
Template pageBlanche.xhtml :
<ui:composition template="/navigation.xhtml">
<ui:define name="pageTitle">
connexion
</ui:define>
<ui:define name="body">
<f:subview id="body">
<h:form>
<h2> Page blanche</h2>
</h:form>
</f:subview>
</ui:define>
</ui:composition>
Partager