ui:repeat JSF 2.0 cannot render iterate p:row primefaces

后端 未结 2 737
走了就别回头了
走了就别回头了 2020-12-19 18:41

I got a problem here, my system config was Mojarra 2.1.7, Primefaces 3.2 and using Glassfish 3.1+.

before this, i got my code well rendered using this codes:

相关标签:
2条回答
  • 2020-12-19 18:55

    As to the concrete problem, the <ui:repeat> is a view render time tag. Thus, it's physically present in the JSF component tree and generates its HTML output as many times as it needs to iterate over the value.

    However, the <p:panelGrid> expects physically multiple <p:row> or <p:column> children, not a single <ui:repeat> with therein a single <p:row>. In other words, they needs to be prepared during the view build time instead of the view render time.

    The JSTL <c:forEach> is a view build time tag. It will generate physically multiple <p:row> components into the JSF component tree and hence the <p:panelGrid> will find solely <p:row> children.

    <p:panelGrid styleClass="centerContent">
        <c:forEach items="#{userBean.officeses}" var="office">
            <p:row id="rowforOffice#{office.officesID}">
                <p:column><p:selectBooleanCheckbox id="access#{office.officesID}"/></p:column>
                <p:column><h:outputText value="#{office.officesName}"/></p:column>
                <p:column><h:outputText value="#{office.officesCode}"/></p:column>
                <p:column><h:outputText value="#{office.parentOffices}"/></p:column>
            </p:row>
        </c:forEach>
    </p:panelGrid>
    

    Note: this breaks view scoped beans in Mojarra versions older than 2.1.18. If you can't upgrade, then consider a <p:dataTable> instead, as you already found out yourself.

    See also:

    • JSTL in JSF2 Facelets... makes sense?
    0 讨论(0)
  • 2020-12-19 19:15

    Thanks to @Jedrus07 to suggest me to post an answer.

    Actually, what i did, was using <p:dataTable/> to make a good display of data. example :

    <p:tabView id="tabCustomerView">
        <p:tab title="Fasilitas Nasabah">
                    <p:fieldset legend="Detil Fasilitas">
                        <p:dataTable value="#{custViewBean.customerSavingAccounts}"
                                     var="customerSavingAccount"
                                     rowIndexVar="customerSavingAccountRowIndex"
                                     paginator="true"
                                     paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                     rows="10"
                                     rowsPerPageTemplate="5,10,15"
                                     paginatorPosition="top">
                            <f:facet name="header">
                                <h:outputText value="Daftar Rekening / Fasilitas Nasabah"/>
                            </f:facet>
    
                            <p:column headerText="#">
                                <h:outputText value="#{customerSavingAccountRowIndex + 1}"/>
                            </p:column>
    
                            <p:column headerText="Fasilitas Nasabah">
                                <h:outputText value="#{of:capitalize(customerSavingAccount.customerFacility)}"/>
                            </p:column>
    
                            <p:column headerText="Saldo Akhir">
                                <h:outputText value="#{customerSavingAccount.lastBalance}">
                                    <f:convertNumber type="currency" currencySymbol="#{appBean.appSetting.curDefault.currencySymbol}"/>
                                </h:outputText>
                            </p:column>
    
                            <p:column headerText="Tanggal Akhir">
                                <h:outputText value="#{customerSavingAccount.lastTransactiondate}">
                                    <f:convertDateTime pattern="#{appBean.appSetting.siteFormatdate}"/>
                                </h:outputText>
                            </p:column>
    
                            <p:column headerText="Suku Bunga">
                                <h:outputText value="#{customerSavingAccount.interest} %"/>
                            </p:column>
    
                            <p:column headerText="Kolektibilitas">
                                <h:outputText value="#{customerSavingAccount.collectibility}"/>
                            </p:column>
    
                            <p:column headerText="Account Officer">
                                <h:outputText value="#{of:capitalize(customerSavingAccount.accountOfficer)}"/>
                            </p:column>
    
                            <p:column headerText="Jumlah Tunggakan">
                                <h:outputText value="#{customerSavingAccount.arrearsAmount}">
                                    <f:convertNumber type="currency" currencySymbol="#{appBean.appSetting.curDefault.currencySymbol}"/>
                                </h:outputText>
                            </p:column>
    
                            <p:column headerText="Jumlah Pembayaran">
                                <h:outputText value="#{customerSavingAccount.totalPayment}">
                                    <f:convertNumber type="currency" currencySymbol="#{appBean.appSetting.curDefault.currencySymbol}"/>
                                </h:outputText>
                            </p:column>
    
                            <p:column headerText="Periode Pembayaran">
                                <h:outputText value="#{customerSavingAccount.termLimit} #{customerSavingAccount.termLimitDesc}"/>
                            </p:column>
    
                            <p:column headerText="Status">
                                <h:outputText value="#{customerSavingAccount.status}"/>
                            </p:column>
                        </p:dataTable>
                    </p:fieldset>
                </p:tab>
    </p:tabView>
    

    So, use datatable for nicer looks to display your datas :) Have fun.

    0 讨论(0)
提交回复
热议问题