【问题标题】:Primefaces Datatable some columns not renderedPrimefaces Datatable 某些列未呈现
【发布时间】:2014-11-26 12:57:45
【问题描述】:

我正在使用 Primefaces 5.1.5 和 jsf 2.2。我们在 tabView 中使用了一个 dataTable 并用数据填充了它,有些列没有呈现?!我已经通过 developerTools 检查了该页面,并且它们确实没有呈现,如您在此处看到的:

这是我们使用数据表的方式:

<p:dataTable emptyMessage="#{msgs['general.noEntriesFound']}"
                                            value="#{manageContracts.pricesForContract}" var="price"
                                            id="existingPrices" scrollHeight="200"
                                            sortBy="#{finalPrice.price}" scrollable="true"
                                            selectionMode="single" liveScroll="true" scrollRows="30"
                                            selection="#{manageContracts.selectedPrice}"
                                            rowKey="#{price.id}">
                                            <p:ajax event="rowSelect"
                                                listener="#{manageContracts.onPriceSelected}"
                                                update=":form:tabView:newPrice"></p:ajax>
                                            <f:facet name="header">
                                                <p:outputLabel value="#{msgs['contract.prices']}" />
                                            </f:facet>
                                            <p:column headerText="#{msgs['contract.distanceFrom']}"
                                                rendered="#{manageContracts.priceModelType == 'DISTANCE_BASED' || manageContracts.priceModelType == 'DISTANCE_BASED_NLC' || manageContracts.priceModelType == 'DISTANCE_BASED_NLC'}"
                                                sortBy="#{price.fromDistance}"
                                                filterBy="#{price.fromDistance}" filterMatchMode="contains"
                                                filterStyle="width: 100%">
                                                <h:outputText value="#{price.fromDistance}">
                                                    <f:convertNumber maxFractionDigits="0" />
                                                </h:outputText>
                                            </p:column>
                                            <p:column headerText="#{msgs['contract.distanceFrom']}"
                                                rendered="#{manageContracts.priceModelType == 'DISTANCE_BASED' || manageContracts.priceModelType == 'DISTANCE_BASED_NLC'}"
                                                sortBy="#{price.toDistance}" filterBy="#{price.toDistance}"
                                                filterMatchMode="contains" filterStyle="width: 100%">
                                                <h:outputText value="#{price.toDistance}">
                                                    <f:convertNumber maxFractionDigits="0" />
                                                </h:outputText>
                                            </p:column>
                                            <p:column headerText="#{msgs['contract.from']}"
                                                rendered="#{manageContracts.priceModelType == 'REGION_BASED'}"
                                                sortBy="#{price.fromDescription}"
                                                filterBy="#{price.fromDescription}"
                                                filterMatchMode="contains" filterStyle="width: 100%">
                                                <h:outputText value="#{price.fromDescription}" />
                                            </p:column>
                                            <p:column headerText="#{msgs['contract.to']}"
                                                rendered="#{manageContracts.priceModelType == 'REGION_BASED'}"
                                                sortBy="#{price.toDescription}"
                                                filterBy="#{price.toDescription}"
                                                filterMatchMode="contains" filterStyle="width: 100%">
                                                <h:outputText value="#{price.toDescription}" />
                                            </p:column>
                                            <p:column headerText="#{msgs['general.brand']}"
                                                rendered="#{manageContracts.priceModelType != 'DISTANCE_BASED_NLC' and manageContracts.priceModelType != 'REGION_BASED_NLC'}"
                                                sortBy="#{price.brandName}" filterBy="#{price.brandName}"
                                                filterMatchMode="contains" filterStyle="width: 100%">
                                                <h:outputText value="#{price.brandName}" />
                                            </p:column>
                                            <p:column headerText="#{msgs['general.type']}"
                                                rendered="#{manageContracts.priceModelType != 'DISTANCE_BASED_NLC' and manageContracts.priceModelType != 'REGION_BASED_NLC'}"
                                                sortBy="#{price.typeName}" filterBy="#{price.typeName}"
                                                filterMatchMode="contains" filterStyle="width: 100%">
                                                <h:outputText value="#{price.typeName}" />
                                            </p:column>
                                            <p:column headerText="#{msgs['general.model']}"
                                                rendered="#{manageContracts.priceModelType != 'DISTANCE_BASED_NLC' and manageContracts.priceModelType != 'REGION_BASED_NLC'}"
                                                sortBy="#{price.modelName}" filterBy="#{price.modelName}"
                                                filterMatchMode="contains" filterStyle="width: 100%">
                                                <h:outputText value="#{price.modelName}" />
                                            </p:column>
                                            <p:column headerText="#{msgs['contract.sizeCategory']}"
                                                sortBy="#{price.wrapped.sizeCategory.categoryName}"
                                                filterBy="#{price.wrapped.sizeCategory.categoryName}"
                                                filterMatchMode="contains" filterStyle="width: 100%"
                                                rendered="#{manageContracts.priceModelType == 'DISTANCE_BASED_NLC' || manageContracts.priceModelType == 'REGION_BASED_NLC'}">
                                                <h:outputText
                                                    value="#{price.wrapped.sizeCategory.categoryName}" />
                                            </p:column>
                                            <p:column
                                                headerText="#{msgs['contract.price']} (#{manageContracts.currency.name()})"
                                                sortBy="#{price.finalPrice.price}"
                                                filterBy="#{price.finalPrice.price}"
                                                filterMatchMode="contains" filterStyle="width: 100%">
                                                <h:outputText value="#{price.finalPrice.price}">
                                                    <f:convertNumber maxFractionDigits="2"
                                                        minFractionDigits="2" />
                                                </h:outputText>
                                            </p:column>
                                            <p:column headerText="#{msgs['contract.validFrom']}"
                                                sortBy="#{price.priceValidityFrom}"
                                                filterBy="#{price.priceValidityFrom}"
                                                filterMatchMode="contains" filterStyle="width: 100%">
                                                <h:outputText value="#{price.priceValidityFrom}">
                                                    <f:convertDateTime pattern="dd.MM.yyyy"
                                                        timeZone="#{dateUtils.timeZone}" />
                                                </h:outputText>
                                            </p:column>
                                            <p:column headerText="#{msgs['contract.validTo']}"
                                                sortBy="#{price.priceValidityTo}"
                                                filterBy="#{price.priceValidityTo}"
                                                filterMatchMode="contains" filterStyle="width: 100%">
                                                <h:outputText value="#{price.priceValidityTo}">
                                                    <f:convertDateTime pattern="dd.MM.yyyy"
                                                        timeZone="#{dateUtils.timeZone}" />
                                                </h:outputText>
                                            </p:column>
                                        </p:dataTable>

有人有想法吗?

【问题讨论】:

    标签: jsf primefaces datatable rendering


    【解决方案1】:

    您在&lt;p:column&gt;rendered 属性中组合了一些条件,请检查它们是否按预期工作。

    我建议您复制rendered 属性的值并粘贴到其他任何位置,这样您就可以在页面中进行检查...只是检查它们是否都是true,如果不是,则该列将不会t 渲染。

          ....
       </p:column>
    </p:dataTable>
    #{manageContracts.priceModelType == 'DISTANCE_BASED' || manageContracts.priceModelType == 'DISTANCE_BASED_NLC'}
    

    【讨论】:

    • 感谢您的回答,但这并没有解决问题。所有值都按预期设置,我确实按照您应该做的那样在开发工具中查找了它。奇怪的是,像Price这样的列没有显示出来,但是列定义中并没有定义渲染属性……
    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 2012-07-19
    • 2011-11-15
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多