Primefaces SummaryRow渲染标题列标题

时间:2018-07-13 21:31:05

标签: jsf primefaces

不幸的是,我遇到了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中看到的那样,我只有outputText的值为'Summary:'。但是数据表的渲染器从第一个Column headerText添加了额外的文本,即'Produkt'。最后,我进入html(摘要行),类似于“ ProduktSummary:”

和图片(结果):

enter image description here

3 个答案:

答案 0 :(得分:2)

Guyz。我找到了解决方案。我希望这可以帮助解决这个问题的人。该解决方案只需从数据表中删除 reflow 属性,即可很好地工作=)。

我希望该帖子对某人有帮助

答案 1 :(得分:0)

也许您可以尝试删除summaryRow列上的colspan = 8

答案 2 :(得分:0)

就像我保证在评论中一样,我会提供修复程序。

这个错误也发生在我身上,我的同事通过禁用一些CSS帮助我解决了它,因此您可以按照以下方式添加:

用于 p:headerRow

<p:headerRow>
   <!-- some code -->
</p:headerRow>

您可以使用:

禁用该问题。
.ui-rowgroup-header > td .ui-column-title {
    display: none;
}

用于 p:summaryRow

<p:summaryRow>
   <!-- some code -->
</p:summaryRow>

您可以使用:

禁用该问题。
.ui-datatable-summaryrow > td .ui-column-title{
    display: none;
}

或者它们只是像这样将它们组合在一起:

.ui-rowgroup-header > td .ui-column-title, .ui-datatable-summaryrow > td .ui-column-title{
    display: none;
}