YangMVC教程- 如何實現分頁

說明

使用YangMVC, 用戶訪問一個url時,這個請求會被映射到控制器類的一個方法上。實現一個數據列表功能時,在控制器中進行數據庫查詢,隨後交給JSP來顯示。

分頁功能是非常常見的功能,而分頁的導航條實現起來比較複雜。如共有1000條數據,每頁顯示10條,當前是第30頁,導航條顯示十個相鄰的頁面的鏈接。 那麼導航條應當顯示什麼? 應該顯示 25 26 27 28 29 的鏈接 , 31 32 33 34 35的鏈接。 那麼如果當前頁時 第3頁呢? 還是顯示十條相鄰鏈接,應該是顯示那些頁的鏈接呢? -2 -1 ? 不能。。 只能往後順延。。

YangMVC提供了一個非常簡便的方式來處理分頁。用戶既不需要關心URL參數,也不需要關心分頁導航條的實現。

控制器的寫法

public class BookController extends Controller {
    public void index(){
        DBTool tool = Model.tool("book");
        LasyList list = tool.all().orderby("id", false);
        put("books", page(list));

        render();
    }

可以看到put一行,list通過page方法包裹,這就實現了分頁。 控制器的修改僅此而已。
默認每頁顯示30條。如果想自定義條數,那麼使用

page(list,10)

這種方式來制定每頁數據個數爲10條。

視圖的寫法

在控制器中使用render來調用對應的默認視圖。 這個BookController的index方法會對應視圖目錄下的book目錄下的index.jsp方法。(給予名字匹配的原則)

這個jsp的核心代碼如下。 在其中加入了${page_data} 來輸出分頁導航條。與沒有分頁的頁面相比,只是加了這個標記而已。


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
(此處省略一堆無關的HTML代碼)
<table class="table table-bordered">
    <c:forEach var="b" items="${books }">
    <tr>
        <td>${b.id }</td>
        <td>${b.name }</td>
        <td>${b.author }</td>
        <td>${b.chaodai }</td>
        <td>${b.tm_year }</td>
        <td>
            <a href='book/edit?id=${b.id}'>編輯</a>
            <a href='book/del?id=${b.id}'>刪除</a>

        </td>
    </tr>
    </c:forEach>
</table>
${page_data }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章