2009-02-11 6 views
7

Ich versuche, eine kleine Optimierung in einer Facelets/JSF-Umgebung zu erreichen. Ich weiß fast nichts, wie alles zusammenpasst.Facelets: Wie übergibt man einen ui: Wert als html-Attribut einfügen?

Ich habe einen Wert auf verschiedenen Seiten als „Titel“

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

Auf einer anderen Seite definiert Ich Referenzierung dies mit:

<ui:insert name="title"/> 

ich HTML-Tags um den Einsatz ganz gut wickeln kann, aber ich muss in der Lage sein, den Wert von "title" als Attribut eines anderen Elements auszugeben. Mein Endziel ist es in html wie folgt zu machen:

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

Wenn ich versuche, den Insert-Tag in den Inhalt setzen = „“ Bit, es wirft einen Parsing-Fehler. Gibt es eine Möglichkeit, dies zu tun?

Antwort

6

Ich habe nicht eine Arbeitsumgebung vor mir, aber ich glaube, Sie wollen nicht Sie <ui:define> verwenden, sondern möchten Sie <ui:param> verwenden, und verwenden Sie dann ${x} oder #{x} (oder vergessen es die oder wenn Angelegenheiten), um sie herauszuziehen.

Also, Sie zum Beispiel würden Sie haben:

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

Und dann:

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

Meine einzige Sorge dabei ist, dass Sie enthalten verwenden schöne Vorlagen, dh

Vorlage:

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

Innenseite:

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

Und ich weiß wirklich nicht, ob das fliegen ...

Edit: Sie möchten ${title} oder #{title} nur zum Spaß, wie Sie tun, um zu versuchen, Jetzt könnte es einfach funktionieren.

+1

In Facelets spielt es keine Rolle, ob Sie $ {x} oder # {x} verwenden. Sie meinen dasselbe: https://facelets.dev.java.net/nonav/docs/dev/docbook.html#el –