2011-03-28 45 views
0

我使用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> 

回答

1

使用p:dataTable而不是h:dataTable

分頁僅適用於primefaces數據表,不適用於普通的jsf dataTable。

+0

我明白了。你可以在代碼中看到我正在使用的primefaces paginator,但它沒有被顯示。我不明白爲什麼? – sfrj 2011-03-28 10:01:20

+0

你的數據是否顯示?它顯示爲一頁還是全部在一頁上?你的代碼看起來是正確的(我以同樣的方式使用它)。 – 2011-03-28 10:05:01

+0

如果我刪除rows =「10」,它會顯示所有數據,但是如果我離開它,它只會顯示10.數據正確顯示正確,但出於某種奇怪的原因,我沒有看到paginator。 – sfrj 2011-03-28 10:07:58

1

paginatorAlwaysVisible是primefaces數據表實施的一個屬性,因此您必須使用primefaces命名空間中的數據表標記:p:dataTable

編輯:此外,您需要在頁面中定義一個h:head元素,以便jsf impl知道在哪裏輸出其他腳本和樣式表。如果是這種情況,您應該看到如下錯誤消息:

一個或多個資源的目標是'head',但在視圖內沒有定義'head'組件。

爲了幫助調試運行你可以在以下方面參數添加到你的web.xml:

<context-param> 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Development</param-value> 
</context-param> 
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:你希望paginator控件的dataTable組件,但是你還沒有指定你想要的。因此,您需要paginatorTemplate屬性。如果您的查詢沒有返回記錄,則paginatorAlwaysVisible="false"屬性在美學上非常好 - 在這種情況下,如果沒有記錄,則不會顯示paginator部分。否則,如果查詢返回至少一條記錄,則可見。