JSF/Primefaces: ui:insert dans de l'interface utilisateur:inclure
Je veux utiliser ui:insert/ui:define pour remplacer le contenu d'un fichier de modèle. À l'intérieur du fichier de modèle il y a un include d'un fichier à l'intérieur de ce fichier est la ui:insert
Ui:define ne fonctionne pas dans ce cas. Si, toutefois, le code de la page.fichier xhtml est incluse dans le modèle.xhtml de l'interface utilisateur:définir fonctionne bien.
Est-il pas possible d'utiliser l'ui:insert/ui:définir à l'intérieur d'une ui:include?
modèle.xhtml:
<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:f="http://java.sun.com/jsf/core"
xmlns:sec="http://www.springframework.org/security/facelets/tags"
xmlns:debug="http://XYZ/jsf/debug"
xmlns:util="http://XYZ/ibk/util"
xmlns:p="http://primefaces.org/ui">
<h:body >
<f:view>
<div id="headerWrapper">
<!-- META-NAVIGATION -->
<div id="metanavWrapper" >
<div class="ui-helper-clearfix pagewidth" >
<ui:include src="metanav.xhtml" />
</div>
</div>
</div>
<div id="contentWrapper" >
<!--div id="content" class="pagewidth"-->
<div id="content">
<div id="contentMenuLeft">
<ui:include src="navigationMenu.xhtml" />
</div>
<div id="contentDisplay">
<ui:insert name="content" />
<ui:insert name="help" />
</div>
</div>
</div>
<util:footer />
</f:view>
<ui:insert name="dialog"/>
</h:body>
</html>
--
<util:footer />
pourrait aussi être écrit comme ui:include, les résultats dans le même...
pied de page.xhtml:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:sec="http://www.springframework.org/security/facelets/tags"
xmlns:p="http://primefaces.org/ui"
>
<div id="footerWrapper">
<f:subview id="footerWrapper">
<h:panelGroup id="footer" >
<div >
<ui:insert name="replace" />
</div>
</h:panelGroup>
</f:subview>
</div>
</ui:composition>
l'autre.xhtml: (extrait)
<ui:composition template="template.xhtml">
<ui:define name="replace">
<h:panelGroup>
<div>
<p:outputLabel value="test"/>
</div>
</h:panelGroup>
</ui:define>
</ui:composition>
Vous devez vous connecter pour publier un commentaire.
La solution consiste à inclure le pied de page.xhtml dans le modèle.xhtml par
Puis l'insérer/définir travaille!
Plus d'infos ici: Quelle est la réelle différence conceptuelle entre l'interface utilisateur:décorer et ui:include?
Si je comprends bien, votre
<ui:define name="replace">
ne fonctionnera jamais sans le pied de page, parce que le correspondant<ui:insert name="replace" />
est à l'intérieur et n'existe que lorsque le pied est inclus. Pas d'insert, pas de définir.Lorsque vous appelez votre autre.xhtml (ou tout autre site avec
template="..."
), le compilateur va regrouper toutesinclude
s, puis ajouter tous les tous lesdefine
ed code sur les lieux de l'correspondantinsert
-tags.<ui:include src="footer.xhtml" />
- inclure?