【问题标题】:Datatable paginator is not displayed数据表分页器不显示
【发布时间】:2011-03-28 09:46:26
【问题描述】:

我正在使用 JSF 2.0 标记数据表制作一个非常简单的数据表,但由于某种原因,页面分页器没有显示。这是为什么呢?

<p:dataTable var="garbage" value="#{resultsController.allGarbage}" paginator="true" rows="10">          

            <p:column>  
            <f:facet name="header">  
            <h:outputText value="Filename" />  
            </f:facet>  
            <h:outputText value="#{garbage.filename}" />
             </p:column> 

            <p:column>  
            <f:facet name="header">  
            <h:outputText value="Description" />  
            </f:facet>  
            <h:outputText value="#{garbage.description}" />  
             </p:column> 

            <p:column>  
            <f:facet name="header">  
            <h:outputText value="Upload date" />  
            </f:facet>  
            <h:outputText value="#{garbage.uploadDate}" /> 
             </p:column>                
    </p:dataTable> 

【问题讨论】:

    标签: jsf jsf-2 datatable primefaces paginator


    【解决方案1】:

    使用p:dataTable 而不是h:dataTable

    分页仅适用于 primefaces 数据表,不适用于普通 jsf 数据表。

    【讨论】:

    • 我明白了。正如您在代码中看到的那样,我正在使用 primefaces 分页器,但它没有被显示。我不明白为什么?
    • 你的数据显示了吗?它是显示为一页还是全部显示在一页上?你的代码似乎是正确的(我用同样的方式)。
    • 如果我删除 rows="10" 它会显示所有数据,但如果我离开它只会显示 10。数据正确显示但由于某些奇怪的原因我没有看到分页器。
    【解决方案2】:

    paginatorAlwaysVisible 是 primefaces 数据表实现的一个属性,因此您必须使用 primefaces 命名空间中的数据表标签:p:dataTable

    编辑:另外,您需要在页面中定义一个h:head 元素,以便jsf impl 知道在哪里输出额外的脚本和样式表。如果是这种情况,您应该会看到如下错误消息:

    一个或多个资源的目标是“头”,但视图中没有定义“头”组件。

    为了帮助调试,您可以在 web.xml 中添加以下上下文参数:

    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    

    【讨论】:

      【解决方案3】:

      @sfrj:你可能需要这样的东西:

      <p:dataTable var="garbage" value="#{resultsController.allGarbage}" paginator="true" rows="10" paginatorPosition="bottom" paginatorTemplate="{FirstPageLink} {PageLinks} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,15,20" paginatorAlwaysVisible="false">
      

      paginator="true" 只告诉 p:dataTable 组件您想要分页器控件,但您还没有指定您想要的内容。因此,您需要 paginatorTemplate 属性。如果您的查询没有返回记录,paginatorAlwaysVisible="false" 属性在美学上是很好的 - 在这种情况下,如果没有记录,则不会显示分页器部分。否则,如果您的查询至少返回一条记录,则它是可见的。

      【讨论】:

        猜你喜欢
        • 2021-02-17
        • 1970-01-01
        • 2015-05-29
        • 2018-08-11
        • 1970-01-01
        • 2019-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多