2017-09-14 2 views
2

Ich möchte ein Raster wie diese erstellen:Untergeordnete Komponente rendern, wenn die gerenderte Eigenschaft der Elternkomponente falsch ist?

Element1 Element2 Element3

Element4 Element5 Element6

Ich habe den folgenden Code:

<ui:repeat value=#{beans.myElementList} var="element" varStatus="i"> 
    <b:row rendered=#{i.index%3==0}> 
     <b:column medium-screen="4"> 
     #{element.display} 
     </b:column> 
    </b:row> 
</ui:repeat> 

Das Ergebnis meiner Code:

Element1

Element4

Wie löst man dieses Problem?

+0

Sie können 'gerendert' nicht wie folgt verwenden ... Wenn Sie eine neue Zeile für jeweils drei Elemente erstellen möchten, benötigen Sie eine kreativere Lösung. Eine davon: https://stackoverflow.com/questions/10481742/jsf-2-uirepeat-group-every-n-items-inside-a-div – Kukeltje

Antwort

1

Versuchen Sie den folgenden Code.
Die erste UI: Wiederholt rendert <row> für jeweils 3 Elemente,
die zweite rendert Elemente (innerhalb) in Gruppen von je 3 Elementen.

<ui:repeat value="#{beans.myElementList}" step="3" varStatus="i" > 

    <b:row> 
     <ui:repeat value="#{beans.myElementList}" var="element" 
        step="1" offset="#{i.index}" 
        size="#{i.index + 3 le beans.myElementList.size() ? i.index + 3 : beans.myElementList.size() }" 
        varStatus="j" > 
      <b:column medium-screen="4"> 
       #{element.display} 
      </b:column>   
     </ui:repeat> 
    </b:row> 

</ui:repeat> 
+0

Also stimmen Sie zu, dass es (neben dem 'div' ist, das ersetzt wird durch eine "Zeile" und "Spalte") ein Duplikat von https://stackoverflow.com/questions/10481742/jsf-2-uirepeat-group-every-n-items-inside-a-div? – Kukeltje

+0

Danke. Mein Problem ist gelöst. –

3

<b:panelGrid> zur Rettung:

<ui:repeat value=#{beans.myElementList} var="element"> 
    <b:panelGrid columns="3" size="md"> 
    #{element.display} 
    </b:panelGrid> 
</ui:repeat> 

<b:panelGrid> wird durch den Standard <h:panelGrid>, inspiriert, die eine HTML-Tabelle macht. In ähnlicher Weise rendert <b:panelGrid> eine Tabelle, die aus Bootstrap-Zeilen und -Spalten besteht. Legen Sie einfach alles, was Sie anzeigen möchten, in das Bedienfeld ein. BootsFaces erkennt automatisch, wann eine neue Zeile gerendert wird.

Der Anwendungsfall, den ich ursprünglich im Sinn hatte, ist eine Form. Eine solche Form ist meistens eine Wiederholung identischer Zeilen: Label, Eingabefeld, Fehlermeldung. <b:panelGrid> können Sie tabellarische Formen wie diese mit minimalem Aufwand erstellen.

Siehe auch die documentation of <b:panelGrid>.

Addition bis BootsFaces 1.2.0 freigegeben ist: Mit Blick auf die Dokumentation war ich nicht glücklich, was ich sah. Also habe ich es korrigiert und aktualisiert. Bis BootsFaces 1.2.0 freigegeben ist, siehe auch documentation of the developer showcase.

Verwandte Themen