前言
本文章主要是针对view层的分页,不涉及数据库部分的描述。分页是很多查询中需要用到的功能,所以复用性很强,前端分页可以做成一个组件来实现。freemarker可以通过macro指令实现自定义标签,通过自定义标签实现组件复用。
macro指令的简单介绍
自定义标签,可以包含标签名,参数,通过macro指令实现
<#macro name param1 param2 ... paramn>
标签中要实现的功能 // 在freemarker的预定义标签或自定义标签中可以直接使用传进来的参数,在标签外使用${param1},来获取参数值
<#macro>
通过使用<@name param1 param2 paramn>/@name的方式调用自定义标签
当在定义体中加入<#nested/>时,可以将使用体中的内容嵌套进去
例如:
<!-- 定义自定义标签 -->
<#macro list count >
<#list 1..count as x>
<#nested x, x/2, x==count>
</#list>
<li><span>结束</span></li>
<#return />
<li><span>已结束</span></li>
</#macro>
<!-- 自定义标签的使用 -->
<@list count = 4; c, halfc, last>
${c}: ${halfc} <#if last==c>last!</#if>
</@list>
显示结果:
- 0.5
- 1
- 1.5
- 2 last!
分页组件的实现
后台
PageParam
- 封装查询参数
- pn
- 当前页
- pageSize
- 每页显示记录数
PageVO
- 封装返回参数
这里之所以用了page和pn是为了适配不同的组件,可忽略
Controller
由于没有使用数据库,只是将一些数据放到了.json文件中。主要是通过PageVo
将分页信息携带回前端。
静态化模板
模板位置
分页组件的使用
下面两个是自定义的分页标签
pageSizeButtons
- 标签名name
- pageSizeButtons
- 参数
- param1
- pageSize
- 每页记录数
- pageSize
- param2
- totalNums
- 总记录数
- totalNums
- param3
- “xx.html”
- 后台请求路径
- “xx.html”
- param1
组件定义
<#macro pageSizeButtons pageSize totalNums url>
中间是功能实现
</#macro>
效果
参考:freemarker文档