分类管理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));
}
上一篇: Set中如何保证元素的唯一性