[JSF] Dynamische Includes (iterative includes)

Status
Nicht offen für weitere Antworten.

JasonV

Aktives Mitglied
Moin,

ich habe ein kleines Problem. Und zwar sieht der Aufbau meiner Web-Applikation vor, dass ich unterschiedlich viele includes machen müsste um den Hauptbereich der Seite zu füllen. Quasi iterativ einbetten.

Ich verdeutliche das mal: meine Anwendung hat einen festen Aufbau mit Menü, Header etc. und dann im Hauptbereich Platz für das, was ich eigentlich anzeigen möchte. Ich habe dazu eine Bean mit einer Liste von Views, die eingebunden werden sollen. Wichtig ist dabei aber, dass ich einen Parameter an diese View (also JSP) geben kann, da eine View unter Umständen mehrfach (mit anderen Werten) ausgegeben werden kann.

Aber genau dies ist nun das Problem. Mein Ansatz war bisher:

Java:
<c:forEach var="currentView" items="#{user.views}">
  <jsp:include page="#{currentView.viewId}" flush="true">
    <jsp:param name="viewId" value="#{currentView.viewId}"/>
  </jsp:include>
</c:forEach>

Da ich ja nicht die includes über JSF ausführen bzw. einbetten kann, habe ich versucht das mit Hilfe der JSTL zu machen. Klappt soweit auch gut, die Seiten werden eingebunden - aber ich kann keinen Parameter durchreichen. Mit einem umschließenden <f:subview> funktioniert das auch nicht.

Im Einsatz habe ich derzeit: MyFaces (1.2.x), Tomahawk, RichFaces.

Gibt es hier eine Lösung? Oder andere Wege, um an das gewünschte Ziel zu kommen? Ich bin jetzt wirklich ratlos.



Für jegliche Hilfe/Ratschläge bin ich dankbar.


Gruß
 

MrWhite

Bekanntes Mitglied
Schonmal Facelets ausprobiert? Da gibts ui:repeat und ist eigentlich genau fuer solche Dinge wie templating etc. gedacht.
 

JasonV

Aktives Mitglied
Schonmal Facelets ausprobiert? Da gibts ui:repeat und ist eigentlich genau fuer solche Dinge wie templating etc. gedacht.

Ja, mit ui:repeat funktioniert es auch nicht :(

Problem ist hier, dass ein nested ui:include innerhalb eines ui:repeat die Variable nicht auflösen und includieren kann. Als wiederholter Aufruf mit festem src (src="xxx.html") funktioniert es. Aber wie gesagt, ich benötige das ja dynamisch ;)
 

Terminator

Aktives Mitglied
Also des ui:repeat is in dem Fall net einsetzbar!


Mach folgendes:

Java:
<c:forEach var="item" items="#{view.items}">
    <ui:include src="#{item.include}.xhtml">
         <ui:param name="id" value="#{item.id}" />
     </ui:include>
</c:forEach>


Mag zwar JSTL überhaupt net, aber in dem Fall denk ich die einzig logisch denkbare Variante.
Zumindest fällt mir jetzt nix anderes ein.
 

JasonV

Aktives Mitglied
Also, danke für die Idee. Habe ich nun auch getestet. Allerdings passiert wiederum nichts :(

Ich habe mir an der Stelle mal den Quelltext angesehen. Dort sehe ich, dass eigentlich nicht das passiert ist, was ich mir wünsche:
Java:
<c:foreach items="[de.xyz.item@d5f9c7, de.xyz.item@1ae9d]" var="item">  </c:foreach>

Anscheinend wird das forEach nicht ausgewertet...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben