2017-09-14 458 views
2

我想建立這樣一個電網:當父組件呈現屬性爲false時呈現子組件?

元素1元素2元素3

元素4元素5元素6

我有以下代碼:

<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> 

我的代碼的結果:

元素1

元素4

如何解決這個問題?

+0

你不能像這樣使用「渲染」......如果你想真正開始一個新的行,每三個項目你需要一個更有創意的解決方案。其中之一:https://stackoverflow.com/questions/10481742/jsf-2-uirepeat-group-every-n-items-inside-a-div – Kukeltje

回答

1

請嘗試下面的代碼。
第一個UI:爲每個3個元素重複渲染<row>,第二個渲染元素(在<column>之內)以3個元素爲一組。

<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

所以你同意它(除了'div's被替換通過'行'和'列')重複https://stackoverflow.com/questions/10481742/jsf-2-uirepeat-group-every-n-items-inside-a-div? – Kukeltje

+0

謝謝。我的問題解決了。 –

3

<b:panelGrid>救援:

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

<b:panelGrid>由標準<h:panelGrid>,這使得一個HTML表格的啓發。同樣,<b:panelGrid>呈現由Bootstrap行和列組成的表。簡單地把你想要顯示的所有東西放到面板網格中。 BootsFaces自動檢測何時渲染新行。

我最初想到的用例是表單。通常情況下,這種形式是重複相同的行:標籤,輸入字段,錯誤消息。 <b:panelGrid>允許您以最小的努力創建像這樣的表格形式。

另請參閱documentation of <b:panelGrid>

直到BootsFaces 1.2.0發佈: 看看文檔,我看到的不是很高興。所以我糾正並更新了它。在BootsFaces 1.2.0發佈之前,請參閱documentation of the developer showcase