欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

分类管理category

程序员文章站 2024-03-22 17:42:16
...
点击跳转发生了什么

0.第一次点击,url默认选定参数,发送第一个接口。分类表格严格按照parentId和categoryLevel查询

<a th:href="@{/admin/categories?parentId=0&categoryLevel=1&backParentId=0}"

1.第一个接口将参数放入request域中,终于才跳转页面

 @GetMapping("/categories")
 public String categoriesPage(HttpServletRequest request, @RequestParam("categoryLevel") Byte categoryLevel, @RequestParam("parentId") Long parentId, @RequestParam("backParentId") Long backParentId) {
     if (categoryLevel == null || categoryLevel < 1 || categoryLevel > 3) {
         return "error/error_5xx";
     }
     request.setAttribute("path", "newbee_mall_category");
     request.setAttribute("parentId", parentId);
     request.setAttribute("backParentId", backParentId);
     request.setAttribute("categoryLevel", categoryLevel);
     return "admin/newbee_mall_category";
 }

2、页面加载完成之时自动调用js方法,加载jqGrid分页插件
细说上面这句话,将它深入展开:无非是jqGrid向后台请求数据(带参),接收到的这个数据,由下图中的jsonReader指明如何解析。Result是二次封装,PageResult是对分页数据做了一次封装,。PageResult比较重要

$(function () {
    var categoryLevel = $("#categoryLevel").val();
    var parentId = $("#parentId").val();

    $("#jqGrid").jqGrid({
        url: '/admin/categories/list?categoryLevel=' + categoryLevel + '&parentId=' + parentId,
        datatype: "json",
        colModel: [
            {label: 'id', name: 'categoryId', index: 'categoryId', width: 50, key: true, hidden: true},
            {label: '分类名称', name: 'categoryName', index: 'categoryName', width: 240},
            {label: '排序值', name: 'categoryRank', index: 'categoryRank', width: 120},
            {label: '添加时间', name: 'createTime', index: 'createTime', width: 120}
        ],
        height: 560,
        rowNum: 10,
        rowList: [10, 20, 50],
        styleUI: 'Bootstrap',
        loadtext: '信息读取中...',
        rownumbers: false,
        rownumWidth: 20,
        autowidth: true,
        multiselect: true,
        pager: "#jqGridPager",
        jsonReader: {
            root: "data.list",// json中代表实际模型数据的入口
            page: "data.currPage",// json中代表当前页码的数据
            total: "data.totalPage",// json中代表页码总数的数据
            records: "data.totalCount"// json中代表数据行总数的数据
        },
        prmNames: {
            page: "page",//第几页
            rows: "limit",//一页多少条
            order: "order",
        },
        gridComplete: function () {
            //隐藏grid底部滚动条
            $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
        }
    });

    $(window).resize(function () {
        $("#jqGrid").setGridWidth($(".card-body").width());
    });
});

下图接受jqGrid发送的接口请求,其中:
params用于获取前端参数,完成PageUtil的实例化;PageUtil用于sql语句查询;PageResult(由getCategorisPage返回)的数据一部分由sql查询得到,一部分由PageUtil得到

    @RequestMapping(value = "/categories/list", method = RequestMethod.GET)
    @ResponseBody
    public Result list(@RequestParam Map<String, Object> params) {
        if (StringUtils.isEmpty(params.get("page")) || StringUtils.isEmpty(params.get("limit")) || StringUtils.isEmpty(params.get("categoryLevel")) || StringUtils.isEmpty(params.get("parentId"))) {
            return ResultGenerator.genFailResult("参数异常!");
        }
        PageQueryUtil pageUtil = new PageQueryUtil(params);
        return ResultGenerator.genSuccessResult(newBeeMallCategoryService.getCategorisPage(pageUtil));
    }