不显示数据表分页符

时间:2011-03-28 09:46:27

标签: jsf jsf-2 datatable primefaces paginator

我正在使用JSF 2.0标签dataTable创建一个非常简单的数据表,但由于某种原因,不会显示页面分页器。那是为什么?

<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> 

3 个答案:

答案 0 :(得分:1)

使用p:dataTable代替h:dataTable

分页仅适用于primefaces dataTable,而不适用于普通的jsf dataTable。

答案 1 :(得分:1)

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

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

  

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

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

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

答案 2 :(得分:0)

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