BBS项目笔记之二:struts2标签前台实现分页的复用



这个分页还是比较有个性的 ...  

主要是靠struts2标签和后台分页类共同计算出分页信息 , 然后根据对目标action的不同配置,这个分页也能复用到不同的地方



一:分页信息的计算

前台负责计算过程:

这是"第一页"的链接 ,

如果真的是第一页 就就给后台action传两个相应的参数 ,如果判断出不是第一页, 那就只把汉字显示出来 ,上边并没有连接

<s:if test="page.hasPrevious==true">
	<s:a action="%{pageAction}">
                          第一页
          <s:param name="page.index" value="0"></s:param>
		<s:param name="page.currPage" value="1"></s:param>
	</s:a>
</s:if><s:else>
                  第一页
      </s:else> </span> <span> 

这是"上一页"的链接, 

判断条件和上边首页的条件是一样的, 只是计算不一样而已

</span> <span> <s:if test="page.hasPrevious==true">
	<s:a action="%{pageAction}">
                        上一页
          <s:param name="page.index" value="page.previousIndex"></s:param>
		<s:param name="page.currPage" value="page.currPage-1"></s:param>
	</s:a>
</s:if><s:else>
                      上一页
      </s:else> </span> <span>

相对的, "下一页"和"尾页"也是这样计算出来





二:后台计算总页数和当前页

总页数之前算法比较多了,就是不能整除的话 要再补一页显示剩下的


这个是计算当前页

这个用于调整索引从0开始,且当前页从1开始, 对索引传值的转换问题

试了几遍写的不赖 , 现在还不明白为什么索引和当前页的记录不是从同一的编号开始, 一会儿去好好看看搜索部分的实现 找找答案

	public Integer getCurrPage() {
		Integer c = index / pageSize;
		if ((index + 1) % pageSize != 0) {
			c++;
		}
		return c == 0 ? 1 : c;
	}





三:提交到不同的action

所有计算的结果都会提交到分页的action,但这里用了OGNL去获得action的配置, 

这样就灵活了, 用同一段代码 想往哪传往哪传


下边是两种用到分页的情况,可以根据action的不同配置,这个分页也能复用到不同的地方

第一种分页比较简单,就是显示分页

	<!-- 为分页定制的url,支持传参数 -->
	<s:url id="pageAction" includeContext="false"
		action="articleAction_queryAllMyArticles" namespace="/">
	</s:url>

第二种分页用到了搜索中

传递分页信息的同时 还把request中隐藏的搜索条件顺便也传递了出去

	<s:url id="pageAction" includeContext="false"
		action="articleAction_doSearch" namespace="/">
		<s:param name="searchStr" value="searchStr"></s:param>
		<s:param name="article.articleTypeName"
			value="article.articleTypeName"></s:param>
	</s:url>
	<!-- 分页 -->
	<s:include value="/WEB-INF/jsp/pageUtil.jsp"></s:include>















评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值