IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

JSF & facelets pb ui:define dans des ui:include


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut JSF & facelets pb ui:define dans des ui:include
    Bonjour cher lecteur,

    J'ai un petit soucis avec les facelets.

    J'essaie d'écrire un template.xhtml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:ui="http://java.sun.com/jsf/facelets">
      <body>
        <ui:include src="unInclude" />
        <ui:insert name="unAutreDefine"/>
      </body>
    </html>
    ma page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        template="template.xhtml">
    </ui:composition>
    Enfin l'include :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
    		xmlns:ui="http://java.sun.com/jsf/facelets">
    	<div>C'est moi l'include</div>
    	<ui:define name="unAutreDefine">un autre define</ui:define>
    </ui:composition>
    Le rendu html est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <body>
    	<div>C'est moi l'include</div>
      </body>
    Le ui:insert de unAutreDefine n'est pas pris en compte.
    Si par contre le define est fait dans la page,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        template="template.xhtml">
      <ui:define name="unAutreDefine">  autre define de la page de test</ui:define>
    </ui:composition>
    il est bien pris en compte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <body>
    	<div>C'est moi l'include</div>  autre define de la page de test
      </body>
    J'arrive à la conclusion que les ui:define ne peuvent pas être écrit dans un fichier qui est utilisé par un ui:include.

    Am I right ?

    Ca limite l'usage des ui:include a du html strito sensus ... encaspsulé quand même dans du ui:composition pour le rendre xml.
    Pourquoi cette limitation ?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Quand tu utilise un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ui:insert name="unAutreDefine"/>
    Tu demande à JSF d'insérer à cet endroit la "variable" unAutreDefine" qui a été fournie par l'appelant du template. Tu peux faire des ui:define à l'intérieur des include, mais il ne serviront que pour les appel à l'intérieur de l'include. Les includes on exactement le même fonctionnement que le template de base, tu peux y mettre des composants JSF, utiliser des expression language, faire des include, utiliser des templates (je ne suis pas certain à ce sujet), mais une chsoe est sur, un ui:define ne "remonte" pas d'un objet inclus vers l'objet parent. Ce n'est pas le même qu'avec "<%@ include" en jsp, qui lui prend le code source et l'inclue dans la source avant de compiler. Le ui:include est plus proche du jsp:include, qui fait un sous appel.

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/06/2012, 22h37
  2. Réponses: 9
    Dernier message: 24/04/2010, 10h03
  3. Lire des define dans une boucle
    Par William210 dans le forum Langage
    Réponses: 14
    Dernier message: 24/02/2010, 19h28
  4. Réponses: 12
    Dernier message: 04/04/2008, 16h24
  5. Réponses: 5
    Dernier message: 11/09/2007, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo