2009-02-11 15 views
7

J'essaie d'accomplir un petit tweak dans un environnement Facelets/JSF. Je sais à peu près comment tout cela s'accorde.Facelettes: comment passer un ui: insérer une valeur en tant qu'attribut html?

J'ai une valeur définie sur différentes pages comme « titre »

<ui:define name="title">PageUID_123</ui:define> 

Sur une autre page Je référencement cela avec:

<ui:insert name="title"/> 

Je peux envelopper balises html autour de l'insert très bien, mais je dois être capable de sortir la valeur de "title" en tant qu'attribut d'un autre élément. Mon objectif final est pour elle de rendre en html comme ceci:

<meta name="pageid" content="PageUID_123"/> 

Si je tente de mettre la balise d'insertion dans le contenu = « » bit, il renvoie une erreur d'analyse syntaxique. Y a-t-il un moyen de faire cela?

Répondre

6

Je n'ai pas un environnement de travail devant moi, mais je crois que vous ne voulez pas utiliser <ui:define>, mais au lieu que vous souhaitez utiliser <ui:param> puis utilisez ${x} ou #{x} (ou oublier qui ou si elle questions) pour les sortir.

Donc, pour vous par exemple vous auriez:

<ui:param name="title" value="PageUID_123" /> 

Et puis:

<meta name="pageid" content="${title}"/> 

Mon seul souci avec ce que vous utilisez include pour avoir de beaux modèles, à savoir

modèle:

<html> 
    <head> 
     <meta name="pageid" content="${title}"/> 
    </head> 
    <body> 
     <ui:insert name="content" /> 
    </body> 
</html> 
Page

intérieure:

<html xmlns="...so many"> 
    <ui:param name="title" value="PageUID_123" /> 
    <ui:define name="content"> 
     <!-- content goes here --> 
    </ui:define> 
</html> 

Et je ne sais vraiment pas si cela voler ...

Edit: Vous pouvez essayer ${title} ou #{title} juste pour le plaisir de la façon que vous faites maintenant, ça pourrait fonctionner.

+1

Dans les facelets, cela n'a pas d'importance si vous utilisez $ {x} ou # {x}. Ils signifient la même chose: https://facelets.dev.java.net/nonav/docs/dev/docbook.html#el –