layui实现分页(前后端)

博客介绍了分页功能的实现,包含前端html代码、后台controller代码以及分页的公用类,并展示了页面效果,涉及layui分页和Java分页技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.前端html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta name="applicable-device" content="pc,mobile">
    <meta http-equiv="Cache-Control" content="no-transform ">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">
    <title>后台管理</title>
    <script src="../../static/back/js/common.js"></script>
    <script src="../../static/back/js/jquery.js"></script>
    <script src="../../static/back/js/bootstrap.js"></script>
    <!--需要引入的css和js-->
    <link rel="stylesheet" type="text/css" href="../../static/layui/css/layui.css">
    <script src="../../static/layui/layui.all.js"></script>
    <style>
        .layui-laypage input{
            margin:-1px 10px;
        }
        .layui-laypage .layui-laypage-skip{
            color:black;
        }
        .listTop td{
            font-weight: bold;
            font-size: 15px;
            background:	#DADFE6;
        }
        .table>tbody>tr>td{
            line-height: 23px!important;
        }
        .btn{
            width:60px!important;
        }
        .btn-search{
            background-color:#4cae4c;
            color:white;
        }
        .btn-empty{
            background-color:#1b6d85;
            color:white;
        }
        .btn-add{
            color:white;
            background-color:teal;
        }
    </style>
</head>
<body >
<!--头部-->
<div id="head" style="width:100%;"></div>
<!--左侧树-->
<div id="leftNave" style="width:200px!important">
</div>
<!-- 安全例会管理 -->
<div class="inform" id="index"style="display: block;">
    <div style="margin-top:-2px;">
        <h1 style="text-align: center;" class="conh1">关键作业项目列表</h1>
        <div class="baoDiv">
            标题:<input id="workName" type="text">
            <button class="btn btn-search" type="button" id="search" title="搜索" onclick="getPeopleList(1)">搜索</button>
            <button class="btn btn-empty" type="button" id="emptySearch" onclick="emptySearch()">清空</button>
            <button class="btn btn-add" type="button" id="renyuanadd" title="添加词条信息" onclick="showWorkItem()">添加</button>
        </div>
        <table id="workItemList" class="table-hover table-striped" style="width:100%;">
            <tr class="listTop">
                <td>序号</td>
                <td>照片</td>
                <td>标题</td>
                <td>创建时间</td>
                <td>操作</td>
            </tr>
            <tbody id="tableContent">

            </tbody>
        </table>
        <!--分页的底部div-->
        <div id="pagefenye" class="fenye" style="text-align:center;margin-top: 50px"></div>
    </div>
</div>
</body>
</html>

<script type="text/javascript">
    $(function(){
        //引用头部的方法
        $("#head").load("../navigation/head.html");
        //引用左侧树的方法
        $("#leftNave").load("../left/left.html");
        getPeopleList(1);//加载分页数据
    });

    //清空搜索条件
    function emptySearch() {
        $("#videoTitle").val("");
        getPeopleList(1);
    }

    //自己封装获取数据方法
    function getPeopleList(crr){
        $('#tableContent').text("")
        var workName = $("#workName").val()
        //获取数据列表
        $.ajax({
            url: url + '/workItem/pageWorkItem',
            type:'post',
            data:{
                "curr":crr||1,
                "workName":workName,
            },
            dataType:'json',
            success:function(res){
                if(res.pageStatus){
                    count=res.pageVo.total;//总记录
                    curr=res.pageVo.currentPageNo; //当前页
                    limit=res.pageVo.pageSize; //每页几个
                    //向页面放入数据

                    //调用分页方法
                    getPageList(count,curr,limit);
                }else {
                    alert("分页加载失败");
                }
            },
            error:function(){
                alert("网络故障");
            }
        })
    }

    //自己封装分页方法
    function getPageList(count,curr,limit){
        //分页方法
        layui.use(['laypage', 'layer'], function(){
            var laypage = layui.laypage
                ,layer = layui.layer;
            //完整功能
            laypage.render({
                elem: 'pagefenye',
                count: count||0,
                theme: '#009587',
                limit : limit||3,
                limits:[5, 10, 20, 30, 40],
                curr : curr||1,
                layout: ['count', 'prev', 'page', 'next',  'refresh', 'skip'],
                jump: function(obj,first){
                    if(!first){
                        getPeopleList (obj.curr);
                    }
                }
            });
        });
    }

</script>

2.后台controller代码:

@ResponseBody
    @PostMapping(value="/pageWorkItem")
    public PageResultVo pageWorkItem(@RequestParam(value = "curr", defaultValue = "1") int curr, @RequestParam(value = "workName") String workName, HttpSession httpSession){
        Integer pageSize = 15;
        Integer fenzuId = (Integer) httpSession.getAttribute("fenzuId");
        PageResultVo<WorkItem> pageResultVo = new PageResultVo<>();
        List<WorkItem> workItemList = iWorkItemService.pageWorkItem(curr,pageSize,workName, fenzuId);
        //设计分页数据
        pageResultVo.setPageStatus(true);
        pageResultVo.setList(workItemList);
        PageVo p = new PageVo();
        p.setCurrentPageNo(curr);
        p.setPageSize(pageSize);
        List<WorkItem> lists = iWorkItemService.pageWorkItem(1,1000000,workName, fenzuId);
        p.setTotal(lists.size());
        p.setTotalPage(lists.size() % pageSize == 0 ? lists.size()/pageSize:(lists.size()/pageSize)+1);
        pageResultVo.setPageVo(p);
        return pageResultVo;
    }

3.分页的公用类

**
 * @Description:分页返回实体
 * @Author:
 * @Date: Created in 14:18 2019-02-12
 * @Modified By:
 */
public class PageResultVo<T> {

    /**
     * 封装分页信息的vo
     */
    private PageVo pageVo;

    /**
     * 分页状态
     */
    private Boolean pageStatus;

    /**
     * 数据集合
     */
    private List<T> list;

    public PageVo getPageVo() {
        return pageVo;
    }

    public void setPageVo(PageVo pageVo) {
        this.pageVo = pageVo;
    }

    public Boolean getPageStatus() {
        return pageStatus;
    }

    public void setPageStatus(Boolean pageStatus) {
        this.pageStatus = pageStatus;
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }
}

页面效果:
在这里插入图片描述

<think>好的,我需要帮助用户解决如何使用Layui框架实现分页表格的问题。首先,我得回忆一下Layui分页组件和表格组件的基本用法。根据用户提供的引用内容,他们可能在配置分页参数或处理异步请求时遇到了问题,比如分页按钮无反应或数据未正确显示。 首先,我应该整理实现分页表格的基本步骤。Layui的表格模块通常需要在前端初始化表格,指定数据接口、分页参数等。同时,后端需要接收分页参数(当前页和每页条数),处理数据并返回符合格式的JSON响应。 接下来,我需要检查用户提供的引用内容。引用[1]提到分页按钮出现但无反应,可能原因是未正确渲染表格或分页事件未绑定。引用[2]和[3]涉及前端引入layui.js和后端生成JSON数据。引用[4]展示了如何从请求中获取当前页参数,引用[5]则提示用户可能对代码理解不够深入。 因此,我的回答应该分步骤指导用户完成前端和后端的配置。首先,确保正确引入Layui的CSS和JS文件。然后,编写HTML结构,初始化表格并配置分页参数。在后端,需要处理分页请求,计算起始位置和总页数,返回正确格式的数据。同时,要处理可能的错误,如参数未传递的情况,如引用[4]中的处理方式。 可能遇到的问题包括:分页按钮无效,这可能是因为没有设置page: true或者未正确处理分页回调;数据未显示,可能因为数据格式不正确或后端接口返回不符合要求。需要强调JSON响应的格式必须包含code、count、data等字段,如引用[3]中的示例。 另外,用户可能需要代码示例来参考,因此提供前后端的代码片段是必要的。例如,前端使用table.render方法,后端使用Java处理分页参数,计算起始索引,查询数据库,并返回JSON。同时,引用中的例子可以作为参考,确保用户正确拼接路径和参数。 最后,需要提醒用户测试分页功能,确保前后端参数传递正确,数据能按页加载。可能还需要处理样式或JS加载的问题,如引用[1]中的layui未定义错误,需检查文件路径是否正确。 总结步骤:引入资源、HTML结构、初始化表格、后端处理分页参数和数据查询、返回正确JSON格式、处理分页事件。同时,注意常见问题的解决方法,如分页按钮无反应或数据不显示,确保用户能逐步排查问题。</think>### 如何用Layui实现分页表格 以下是分步实现Layui分页表格的完整流程: --- #### **1. 引入Layui资源** 在HTML头部引入Layui的CSS和JS文件: ```html <link rel="stylesheet" href="/path/to/layui/css/layui.css"> <script src="/path/to/layui/layui.js"></script> ``` 确保路径正确,否则会导致`layui is not defined`错误[^1]。 --- #### **2. 编写HTML结构** 定义表格容器和分页区域: ```html <table id="demoTable" lay-filter="demoTable"></table> <div id="pager"></div> ``` --- #### **3. 初始化表格与分页** 通过Layui的`table`模块配置分页参数: ```javascript layui.use(['table', 'laypage'], function(){ var table = layui.table; var laypage = layui.laypage; // 初始化表格 table.render({ elem: '#demoTable', url: '/api/data', // 后端接口地址 page: true, // 开启分页 cols: [[ {field: 'id', title: 'ID'}, {field: 'name', title: '名称'} ]], done: function(res){ // 渲染分页组件 laypage.render({ elem: 'pager', count: res.count, // 数据总数 curr: res.currPage, // 当前页 jump: function(obj, first){ if(!first){ // 分页跳转时重新加载数据 table.reload('demoTable', { where: { currentPage: obj.curr, pageSize: obj.limit } }); } } }); } }); }); ``` --- #### **4. 后端接口实现Java示例)** 处理分页请求并返回JSON数据: ```java // 获取分页参数 String currentPage = request.getParameter("currentPage") == null ? "1" : request.getParameter("currentPage"); String pageSize = request.getParameter("pageSize") == null ? "10" : request.getParameter("pageSize"); int pageNum = Integer.parseInt(currentPage); int limit = Integer.parseInt(pageSize); // 查询数据(示例使用伪代码) List<Data> dataList = dataService.getDataByPage((pageNum-1)*limit, limit); int totalCount = dataService.getTotalCount(); // 返回JSON response.setContentType("application/json"); response.getWriter().write( "{\"code\":0, \"msg\":\"\", \"count\":" + totalCount + ", \"data\":" + new Gson().toJson(dataList) + "}" ); ``` 需确保JSON格式包含`code`、`count`、`data`字段[^3]。 --- #### **5. 常见问题解决** - **分页按钮无反应**:检查是否设置`page: true`,或分页组件未正确绑定`elem`属性。 - **数据不显示**:验证后端返回的JSON格式是否符合Layui要求,或网络请求是否异常(通过浏览器开发者工具查看)。 - **参数传递错误**:后端需正确处理`currentPage`和`pageSize`参数,避免分页计算错误[^4]。 --- #### **效果示例** - 表格按页加载数据,分页按钮动态更新。 - 点击分页时,触发`table.reload`重新请求接口并渲染数据。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值