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 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值