簡體   English   中英

如何在Struts 2中實現分頁

[英]How to implement a pagination in Struts 2

如何在Struts 2中為客戶端顯示實現分頁,並如何將Hibernate作為持久層。

這是我到目前為止完成的代碼:

<display:table id="students" name="students" pagesize="2"
    export="false" requestURI="/student">
    <display:column property="studentRoll" title="Roll"
        paramId="studentRoll" sortable="true" />
    <display:column property="studentName" title="Name" sortable="true" />
    <display:column property="studentCourse" title="Course"
        sortable="true" />
    <display:setProperty name="paging.banner.placement" value="bottom" />
</display:table>

沒有display標簽,有什么方法可以實現?

有一種方法可以實現它,我會給您一些建議。 可能不是您在尋找,而是使用顯示標簽,我真的懷疑您可以實現某些無關緊要的單詞。 display標簽是一個用於簡化網絡上表格數據表示的庫,它已經足夠老,可以與Ajax等現代技術以及基於組件的腳本庫(如jQuery等)一起使用。即使我看到了ajaxified,但我仍然看到看到的僅僅是增加有問題的體系結構的復雜性。 需要在此處添加基於屬性的顯示標簽庫的性質。 創建它的目的是簡化當時的使用或開發過程。 如今,人們不再局限於定制和丑陋的解決方案。

現在看一下代碼,如果我能說這是代碼,則標記表示具有行和列的表,並且可以使用標簽,標頭,其他HTML屬性(甚至使用CSS)對它們進行自定義,但這不是這個問題。

屬性名稱表示變量,數據結構表示表格數據。 它可以是列表列表,也可以是對象集。 有什么問題,它可以迭代並具有行和列。

pagesize屬性指向每頁的記錄數。

給定的URI甚至不記得它是什么來從服務器饋送數據或只是為了轉義。

標記的末尾是橫幅廣告放置,通過屬性設置。 因此,您甚至不必設置任何代碼即可實現自定義。

現在,要在Struts2中用數據表示表,有一個

<s:iterator var="row" begin="0" value="#request.navigator.list">

標簽,列表是students還是其他無關緊要的內容。 導航器是類似於顯示標簽中橫幅的對象,但此處不是組件。 帶有按鈕的組件導航器,我將在后面介紹。

在迭代器內部,您可能有任何內容代表該行。 但這是不可能的。

例如,可以簡單地給導航器作為組件

<s:property value="#request.navigator.bar" escapeHtml="false"/>  

然后,通過SQL或HQL從數據庫中獲取列表中的數據,或者Criteria API無關緊要。 這分兩個步驟完成。 首先檢查希望返回的記錄總數。 它提供了在末尾移動且不超過頁面大小的可能性。 然后返回在頁面上表示所需的有限行數。 這些都在顯示表的操作中完成。 要執行的操作需要兩個參數,第一行和頁面大小。 如果記錄總數已更改,則也需要糾正導航器。

這就是我要回答的有關如何實現頁面導航邏輯的問題。 我試着不為它編寫很多很多代碼。

您將需要或多或少復制顯示的方式。

  1. 您需要構建一個頁面選擇器,為此,您需要獲取總計的項目數-請參閱Criteria.setProjection(Projections.rowCount)。
  2. 您需要在頁面上提供鏈接,以允許用戶將所選頁面發送到操作。
  3. 然后,您可以在操作中使用選定的頁碼和頁面大小來確定偏移量和結果數,請參閱Critera.setFirstResult和Criteria.setMaxResults
  4. 然后,您將讀取這些行並創建行bean的集合。
  5. 在JSP中,遍歷bean並使用<s:iterator \\>構建表。

似乎使用displaytag可能更容易,請參見其PaginatedList接口,該接口可讓您在Hibernate中進行分頁,並讓displaytag完成所有艱苦的工作。

我建議您使用jQuery Datatable ,您需要完成以下操作:

<table id="datatable">
  <tbody>
    <s:iterator>
        <tr><td><s:property/></td></tr>
    </s:iterator>
  </tbody>
</table>
<script>
    $("#datatable").dataTable();
</script>

還有其他選項,例如struts2-jquery-plugin

這取決於您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM