2012-04-05 15 views
0

Ich habe eine Liste von Objekten, "denke draggable Panels", die auf dem Bildschirm gerendert werden müssen. Jedes dieser Panels hat sein eigenes Material, das es darin rendern muss. Mein erster Gedanke war so etwas wiegenerieren Sie eine Liste Widgets in JSF mit "Bindung"

<ui:repeat value="#{bean.widgets} var="widget"> 
    <p:panel binding="#{widget.contents}/> 
</ui:repeat> 

tun Nun dies nicht funktioniert wahrscheinlich für viele Grund. Eine, die ich weiß ist, dass die "Var" ist nur Anfrage Umfang. Während ich also auf die Werte von Feldern innerhalb meines Java-Objekts "widget" zugreifen kann, kann ich nicht direkt eine Methode aufrufen, um mein Panel zu binden.

Könnte jemand Richtung zur Verfügung stellen?

Gegenwärtig läuft PrimeFaces 3.2 | GlassFish 3.1.2 | Mojarra 2.1.6

Antwort

0

Das binding Attribut wird während Ansicht Kompilierzeit ausgewertet, während das <ui:repeat var> Attribut während Ansicht Renderzeit ausgewertet wird, so ist es in der Tat null an dem Punkt ist die <p:panel> entdeckt und gebaut.

Verwenden JSTL <c:forEach> statt <ui:repeat> (und zu beheben, um das fehlende Zitat):

<c:forEach items="#{bean.widgets}" var="widget"> 
    <p:panel binding="#{widget.contents}/> 
</c:forEach> 

Auf diese Weise Sie wirklich auch physisch mehrere <p:panel> Komponenten statt nur eines, das mehrere Male erhalten gemacht zu erzeugen.

Die Verwendung von JSTL kann jedoch wiederum andere Vorbehalte haben, abhängig vom Gesamtbild, das aus der Frage nicht klar ist. Siehe auch JSTL in JSF2 Facelets... makes sense?

+0

Lassen Sie mich dann eine weitere Schicht der Komplexität darauf werfen. Diese Panels werden jeweils mit einer Registerkarte "Primafaces" erstellt, die dynamisch erstellt wird. Also, c: forEach wird fehlschlagen, da es keine Registerkarte zur Ansichtszeit gibt (richtig?). Auch, ja, meine Bean ist auch ViewScoped. – user1269227

+0

Nun, suchen Sie nach einem anderen Ansatz. Z.B. Dynamische Includes, Tag-Dateien oder etwas, abhängig von den konkreten funktionalen Anforderungen. – BalusC

+0

Meine Anforderungen sind, dass ich 'n' Anzahl der Panels habe, die ich in einer Registerkarte anzeigen muss. Jedes Panel hat Eigenschaften, die geändert werden können und die zum Server zurückgeschoben werden müssen (die nur zu diesem Panel gehören). Jedes Panel ist an ein Pojo-Modell gebunden, das aktualisiert werden muss. Ich vermute, dass ich einige fundamentale Bausteine ​​in Bezug auf mein JSF-Wissen vermisse, da ich nicht sicher bin, wie eine dynamische Include- oder benutzerdefinierte Komponente zur Lösung dieses Problems verwendet werden kann. Ich schätze deine Einsicht. – user1269227

Verwandte Themen