2010-01-15 6 views
3

Je développe une application web dans jboss, seam, richfaces. J'utilise un gabarit (xhtml) comme gabarit de tous les autres et je mets deux balises d'insertion. <ui:insert name="head"/> <ui:insert name="body"/>Comment définir une définition à l'intérieur d'autres définir

Le problème est que dans les pages qui utilisent cette page maître comme modèle, le <ui:define name="head">...</ui:define> doit être défini dans le <ui:define name="body">...</ui:define>.

Comment puis-je faire cela?

Fondamentalement, ce que je veux est de faire ce qui suit:

<ui:define name="body">... <ui:define name="head"> <meta name="title" content="#{something.title}" /> </ui:define> ...</ui:define>

la page principale doit retourner: <meta name="title" content="#{something.title}" /> sur les <ui:insert name="head"/>

Merci à l'avance

+0

Pourquoi auriez-vous nicher ui: définir des balises? Les chances sont, vous pensez seulement que vous faites. –

Répondre

0

Vous pouvez utiliser <ui:param> afin de définir content sur chaque page. Par exemple

dans le modèle:

<meta name="title" content="#{titleParam}" /> 

dans la page qui utilise le modèle:

<ui:param name="titleParam" value="customValueForThisPage" /> 
+0

Salut Bozho, merci pour votre réponse. Malheureusement, valeur n'est pas reconnu sur la page de modèle lorsqu'il est défini sur la page qui utilise le modèle, à l'intérieur d'un tag définir :( –

+0

l'utiliser en dehors de la balise define.Il fonctionne parfaitement dans mon application actuelle.Oui – Bozho

+0

la balise define.Mais j'ai besoin des informations à l'intérieur de la balise define pour remplir ui: valeur du paramètre: s –

1

Je ne pense pas facelets travailler comme ça. Il compile et lit le modèle.

Donc je pense que vous pouvez simplement définir combien de définitions vous voulez et ne vous souciez pas de l'imbrication.

-à-dire:

//In your template.xhtml 
<ui:insert name="outer"> 
    BLA BLA BLA 
    <ui:insert name="inner"/> 
    BLA BLA BLA 
</ui:insert> 

Et lorsque vous voulez utiliser ce modèle simple:

<ui:define name="outer"> 
    Here you can overwrite outer (This will probably overwrite inner, not sure, you need to test it) 
</ui:define> 

<ui:define name="inner"> 
    Or you can ONLY overwrite inner here if you want 
</ui:define> 
Questions connexes