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

person javing    schedule 28.03.2011    source источник


Ответы (3)


Используйте p:dataTable вместо h:dataTable.

Разбивка на страницы работает только с таблицей данных Primefaces, а не с простой таблицей данных jsf.

person Matt Handy    schedule 28.03.2011
comment
Я понимаю. Я использую разбивку на страницы с простыми лицами, как вы можете видеть в коде, но он не отображается. Я не понимаю, почему? - person javing; 28.03.2011
comment
Ваши данные отображаются? Отображается как одна страница или все на одной странице? Ваш код кажется правильным (я использую его так же). - person Matt Handy; 28.03.2011
comment
Если я удалю строки = 10, он покажет все данные, но если я оставлю его, он покажет только 10. Данные отображаются правильно, но по какой-то странной причине я не вижу разбивку на страницы. - person javing; 28.03.2011

paginatorAlwaysVisible является атрибутом реализации datatable Primefaces, поэтому вам придется использовать тег datatable из пространства имен Primefaces: p:dataTable.

Редактировать: Кроме того, вам нужен элемент h:head, определенный на вашей странице, чтобы реализация jsf знала, куда выводить дополнительные скрипты и таблицы стилей. Если это так, вы должны увидеть сообщение об ошибке, например:

Один или несколько ресурсов имеют цель "голова", но компонент "голова" не был определен в представлении.

Чтобы облегчить отладку, вы можете добавить следующий параметр контекста в свой файл web.xml:

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>
person Jörn Horstmann    schedule 28.03.2011

@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, что вам нужен элемент управления paginator, но вы еще не указали, что вы хотите в нем. Следовательно, вам нужен атрибут paginatorTemplate. Атрибут paginatorAlwaysVisible="false" хорош с эстетической точки зрения, если ваш запрос не возвращает записи — в этом случае раздел разбивки на страницы не будет отображаться, если записи отсутствуют. В противном случае это видно, если по вашему запросу возвращена хотя бы одна запись.

person ChuongPham    schedule 19.04.2011