簡體   English   中英

ui 重復 p:panelGrid 和其他 ui 在素面內重復

[英]ui repeat with p:panelGrid and other ui repeat inside primefaces

我在嘗試使用帶有數據網格的 ui repeat 和此網格內的其他 ui repeat 時遇到問題

這是我的代碼

<ui:repeat var="blockSpace" value="#{providersMB.fillBlockSpaceRsv}" >
<p:panelGrid style="margin-top:20px" rendered="#{providersMB.blockSpace}">
    <f:facet name="header">                     
        <p:row>
            <p:column>
                <h:outputLabel value="#{blockSpace.company}" />                                     
           </p:column>
           <p:column>#{label['displayOrders.label.businessClass']}/p:column>
           <p:column>#{label['displayOrders.label.yankeeClass']}</p:column>                                                         
        </p:row>                 
    </f:facet>

    <p:row>
        <p:column>#{label['displayOrders.label.reservation']}</p:column>                         
        <p:column><p:spinner id="basic" value="#{spinnerView.number1}" />
        </p:column>                      
        <p:column>
        <p:spinner id="spinner" value="#{spinnerView.number1}" />
        </p:column>

    </p:row>

    <p:row>
        <p:column>#{label['displayOrders.label.configuration']}</p:column>
        <ui:repeat var="blockSpaceCabin" 
             value="#{blockSpace.blockSpaceCabin}" >
           <p:column> <h:outputLabel value="#{blockSpaceCabin.quantity}"/>                     
           </p:column>
        </ui:repeat>                                            
    </p:row>                       
</p:panelGrid>

第二個 uirepeat 的值未顯示。

ui:repeat 在視圖渲染期間運行,而 p:panelGrid 在視圖構建期間運行。 PanelGrid 將在視圖構建期間期待它們的子元素,但由於它們在渲染時可用,因此失敗。

在第二個 ui:repeat 上試試這個。 更改 ui:repeat 與 c:forEach

<c:forEach items="#{blockSpace.blockSpaceCabin}" var="blockSpaceCabin">
    <p:column>
        <h:outputLabel value="#{blockSpaceCabin.quantity}"/>                     
    </p:column>
</c:forEach>

您也可以在此處使用 BalusC 的帖子: c:forEach inside primefaces(eg p:panelgrid) inside ui:repeat

另一方面,因為你有一個 3 列的布局,你不能在 #{blockSpace.blockSpaceCabin} 里面有兩個以上的元素,所以你可以在第一個 forEach 中定義的 blockSpace 元素上將它們設置為 #{providersMB.fillBlockSpaceRsv }. 最好不要將 jstl 標簽與 jsf 混合使用,以免麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM