首页 > 解决方案 > Primefaces SummaryRow 渲染标题列标题

问题描述

不幸的是,我对 PrimeFaces SummaryRow 有疑问。

我需要做的是创建一个包含一些内容的简单 SummaryRow。但是,当我将某些内容放入 PrimeFaces Datatable 的 SummaryRow 渲染器时,总是会从列标题中添加额外的字符串。

下面是一些代码:

 <p:dataTable var="orderProductVariantSerializable" 
                     reflow="true" 
                     sortBy="#{orderProductVariantSerializable.serialVersionUID}"
                     value="#{cartView.orderSerializableList}">


            <p:column class="image-column" headerText="#{stringProduct}">
                <c:set var="productVariant" value="#{orderProductVariantSerializable.productVariant}" />
                <ui:include src="../parts/product_image.xhtml" />
            </p:column>

            <p:column  headerText="#{stringDescription}">
                <p:outputPanel class="cart-cell-wrapper cart-description">
                    <h:outputText class="cart-description-manufacturer"
                                  value="#{orderProductVariantSerializable.productName.product.manufacturer.aname}"/>
                    <h:outputText value="#{orderProductVariantSerializable.productName.avalue}"/>
                </p:outputPanel>
                <p:outputPanel class="cart-cell-wrapper attributes-column">
                    <p:dataList
                        var="position"
                        rendered="#{not empty orderProductVariantSerializable.variantItemList}"
                        value="#{orderProductVariantSerializable.variantItemList}">
                        <h:panelGrid columns="2">
                            <h:outputText value="#{position.attributesNames.avalue}"/>
                            <p:dataList var="attributesPositionsName" value="#{position.attributesPositionsNamesList}">
                                <h:outputText value="#{attributesPositionsName.avalue}"/>
                            </p:dataList>
                        </h:panelGrid>
                    </p:dataList>
                </p:outputPanel>
            </p:column>

            <p:column class="quantity-column" headerText="#{stringQuantity}">
                <p:outputPanel class="cart-cell-wrapper">
                    <h:panelGrid class="quantity-table">
                        <p:outputPanel>
                            <p:inputNumber decimalPlaces="0" readonly="true" value="#{orderProductVariantSerializable.amount}"/>
                        </p:outputPanel>
                        <h:panelGrid columns="2">
                            <p:commandLink rendered="#{cartView.shouldRenderEnabledMinus(orderProductVariantSerializable)}"
                                           actionListener="#{cartView.decrementQuantity(orderProductVariantSerializable)}" process="@form"
                                           onstart="NProgress.start();" 
                                           oncomplete="NProgress.done();">
                                <i class="fas fa-minus" aria-hidden="true"></i>
                            </p:commandLink>
                            <p:commandLink rendered="#{cartView.shouldRenderDisabledMinus(orderProductVariantSerializable)}" disabled="true">
                                <i class="fas fa-minus" aria-hidden="true"></i>
                            </p:commandLink>
                            <p:commandLink actionListener="#{cartView.incrementQuantity(orderProductVariantSerializable)}" process="@form"
                                           onstart="NProgress.start();" 
                                           oncomplete="NProgress.done();">
                                <i class="fas fa-plus" aria-hidden="true"></i>
                            </p:commandLink>
                        </h:panelGrid>
                    </h:panelGrid>
                </p:outputPanel>
            </p:column>

            <p:column headerText="#{stringAvailability}">
                <h:outputText value="#{orderProductVariantSerializable.productVariant.amount}" />
            </p:column>

            <p:column class="unit-price-column" headerText="#{stringUnitPrice}">
                <h:outputText value="#{orderProductVariantSerializable.finalPriceGross}">
                    <f:convertNumber groupingUsed="true" minFractionDigits="2"/>
                </h:outputText>
                <h:outputText value="#{layoutView.currency.aname.toUpperCase()}"/>
            </p:column>

            <p:column headerText="#{stringToPay}">
                <h:outputText value="#{orderProductVariantSerializable.toPayAll}">
                    <f:convertNumber groupingUsed="true" minFractionDigits="2"/>
                </h:outputText>
                <h:outputText value="#{layoutView.currency.aname.toUpperCase()}"/>
            </p:column>

            <p:column headerText="#{stringToPay}">
                <h:outputText value="#{orderProductVariantSerializable.toPayAllNet}">
                    <f:convertNumber groupingUsed="true" minFractionDigits="2"/>
                </h:outputText>
                <h:outputText value="#{layoutView.currency.aname.toUpperCase()}"/>
            </p:column>

            <p:column class="delete-column">
                <p:commandLink actionListener="#{cartView.deleteProductFromCart(orderProductVariantSerializable)}" 
                               class="cart-trash"
                               update="#{cartView.formId}"
                               onstart="NProgress.start();" 
                               oncomplete="NProgress.done();">
                    <i class="fas fa-times" aria-hidden="true"></i>
                </p:commandLink>
            </p:column>

            <p:summaryRow>
                <p:column colspan="8" >
                    <h:outputText value="Summary:" />
                </p:column>
            </p:summaryRow>

        </p:dataTable>

就像您在 SummaryRow 中看到的那样,我刚刚输出了值为“Summary:”的输出文本。但是数据表的渲染器从第一个列 headerText 中添加了额外的文本,即“Produkt”。最后我进入 html (summary-row) 类似 'ProduktSummary:'

和图像(结果):

在此处输入图像描述

标签: jsfprimefaces

解决方案


盖兹。我找到了解决方案。我希望这能帮助解决问题的人。它只是从数据表中删除回流属性的解决方案,它将运行良好=)。

我希望这篇文章对某人有帮助


推荐阅读