0

我正在使用 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> 
4

3 回答 3

1

使用p:dataTable而不是h:dataTable.

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

于 2011-03-28T09:48:52.340 回答
1

paginatorAlwaysVisible是 primefaces 数据表实现的一个属性,因此您必须使用 primefaces 命名空间中的 datatable 标记: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>
于 2011-03-28T09:50:03.167 回答
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"只告诉 p:dataTable 组件您想要分页器控件,但您还没有指定您想要的内容。因此,您需要该paginatorTemplate属性。如果您的查询没有返回记录,则该paginatorAlwaysVisible="false"属性在美学上很好 - 在这种情况下,如果没有记录,则不会显示分页器部分。否则,如果您的查询至少返回一条记录,则它是可见的。

于 2011-04-19T19:20:45.923 回答