2017-09-14 6 views
2

私はこのようなグリッドを作成したい:親コンポーネントのレンダリングプロパティがfalseの場合、子コンポーネントをレンダリングしますか?

要素1エレメント2エレメント3

Element4エレメント5 Element6

私は次のコードを持っている:

<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

このように 'レンダリング'を使用することはできません...実際に3つのアイテムごとに新しい行を開始する場合は、より創造的な解決策が必要です。これらのうちの1つ:https://stackoverflow.com/questions/10481742/jsf-2-uirepeat-group-every-n-items-inside-a-div – Kukeltje

答えて

1

次のコードを試してください。
最初のui:repeatは、3つの要素ごとに<row>をレンダリングし、
は、2番目の要素が3つの要素のグループで要素を(<column>内に)レンダリングします。救助へ

<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> HTMLテーブルをレンダリングする標準<h:panelGrid>、触発されています。同様に、<b:panelGrid>は、ブートストラップの行と列で構成される表をレンダリングします。表示するすべてのものをパネルグリッドに配置するだけです。 BootsFacesは新しい行をいつレンダリングするかを自動的に検出します。

私が当初考えていた使用例はフォームです。多くの場合、そのようなフォームは同じ行の繰り返しです:ラベル、入力フィールド、エラーメッセージ。 <b:panelGrid>では、最小限の労力でこのような表形式を作成できます。

documentation of <b:panelGrid>も参照してください。

BootsFaces 1.2.0がリリースされるまでの追加: ドキュメントを見ると、私は見たものが幸せではありませんでした。だから私はそれを修正し、更新しました。 BootsFaces 1.2.0がリリースされるまでは、documentation of the developer showcaseも参照してください。

関連する問題