struts2 标签 分页 (数字+省略号)

前段时间做一小项目,小得只有一个人,期限一周。鉴于只有不到20个页面,业务也不是很复杂,也就没用公司的平台。徒手写吧……临到结束,卡住了,被分页卡住了。以前也写过分页,不外乎[首页][上一页]1234[下一页][末页],撑死再加个[共12条记录]。

怎么实现页数部分显示,中间有省略号的样式呢,而且使用struts2标签?如下图所示:


       

    长夜漫漫,眼看就要天亮,怎么办?KK,不干了,应付一下得了,反正也没人在意。辗转反侧,难以入眠。想想上学时,为了一个问题没日没夜熬啊,课也不上了,就为敲出一个问题。要这么睡去,是在不甘。继续百度google,都翻了20多页了,貌似都是一个人写的,碰到一个转载的免不了愤愤不已,老大,倒什么乱啊!睁不开眼了,去了趟qzone,什么说说,weibo,分享,相册,有了:

<!--first -->
<s:url id="first" value="listAll">
	<s:param name="page.pageCurrent" value="1"></s:param>
</s:url>
<!--pre -->
<s:url id="pre" value="listAll">
	<s:param name="page.pageCurrent" value="page.prePage"></s:param>
</s:url>
<!--current -->
<s:url id="pageCurr" value="listAll">
	<%--<s:param name="page.pageCurrent" value="page.pageCurrent"></s:param>--%>
</s:url>
<!--next -->
<s:url id="next" value="listAll">
	<s:param name="page.pageCurrent" value="page.nextPage"></s:param>
</s:url>
<!--last -->
<s:url id="last" value="listAll">
	<s:param name="page.pageCurrent" value="page.pageTotalSize"></s:param>
</s:url>

<!-- 设置起始页 -->
<s:if test=" page.pageCurrent - page.offsetPage > 0 ">
	<s:set name="start" value="page.pageCurrent - page.offsetPage" />
</s:if>
<s:else>
	<s:set name="start" value="1" />
</s:else>
<!-- 设置结束页 -->
<s:if test="page.pageCurrent + page.offsetPage <= page.pageTotalSize">
	<s:set name="end" value="page.pageCurrent+2" />
</s:if>
<s:else>
	<s:set name="end" value="page.pageTotalSize" />
</s:else>

<!-- page -->
<s:if test="page.pageAllRecords>0"><!--如果有记录的话  -->
<div class="pagination">
	<span><!--显示记录总数  -->
		Total Records[<s:property value="page.pageAllRecords" />]
	</span>
	
	<s:if test="page.hasPrePage"><!--上一页可用  -->
		<s:a href="%{pre}" title="Previous Page">« Previous</s:a>
	</s:if>
	<s:else><!--上一页不可用,灰色处理  -->
		<s:a href="javascript:void(0);" title="Previous Page"
			cssStyle="color:#D0D0D0;">« Previous</s:a>
	</s:else>
	
	
	<s:if test="page.pageCurrent - page.offsetPage <= 1">
	</s:if>
	<s:else>
		<s:a href="%{pageCurr}?page.pageCurrent=1"
			title="Current Page" cssClass="number">
			<s:property value="1" />
		</s:a>
		<s:if test="page.pageCurrent - page.offsetPage > 2">
			<span>...</span>
		</s:if>
		<s:else>
		</s:else>
	</s:else>

	<s:bean name="org.apache.struts2.util.Counter" id="counter">
		<s:param name="first" value="#start" />
		<s:param name="last" value="#end" />
		<s:iterator status="sta">
			<!-- 如果为当前页 ,设置选中样式 -->
			<s:if test="page.pageCurrent==current-1">
				<s:a
					href="%{pageCurr}?page.pageCurrent=%{page.pageCurrent}"
					title="Current Page" cssClass="number current">
						 <s:property value="page.pageCurrent" /> 
				</s:a>
			</s:if>
			<s:else><!-- 非当前页 ,设置样式 -->
				<s:a href="%{pageCurr}?page.pageCurrent=%{current-1}"
					title="%{#sta.index+1}" cssClass="number">
					 <s:property /> 
				</s:a>
			</s:else>
		</s:iterator>
	</s:bean>
	
	<s:if test="page.pageCurrent + page.offsetPage > page.pageTotalSize- 1">
	</s:if>
	<s:else>
		<s:if test="page.pageCurrent + page.offsetPage < page.pageTotalSize- 1">
			<span>...</span>
		</s:if>
		<s:else>
		</s:else>
		<s:a
			href="%{pageCurr}?page.pageCurrent=%{page.pageTotalSize}"
			title="Current Page" cssClass="number">
			<s:property value="page.pageTotalSize" />
		</s:a>
	</s:else>

	<s:if test="page.hasNextPage"><!--下一页可用  -->
		<s:a href="%{next}" title="Next Page">Next »</s:a>
	</s:if>
	<s:else><!--下一页不可用 ,灰色处理-->
		<s:a href="javascript:void(0);" title="Next Page"
			cssStyle="color:#D0D0D0;">Next »</s:a>
	</s:else>
</div>
</s:if>
qzone 相册分页!!! 对,以上算法就是出自qzone相册!在此借鉴一下,其大致结构摘出来就是

start = (this.currentPage - this.offsetPage > 0) ? (this.currentPage - this.offsetPage) : 1;
end = (this.currentPage + this.offsetPage <= this.totalPage) ? (this.currentPage + this.offsetPage) : this.totalPage;

if(this.currentPage - this.offsetPage <= 1){

}else{
	 FIRST_ENABLE;
	 if(this.currentPage - this.offsetPage > 2){
		ELLIPSIS
	 }else{
	 
	 }
}

(this.currentPage == 1) ? TEMPLATE.PREVIOUS_DISABLE: TEMPLATE.PREVIOUS_ENABLE
(this.currentPage == this.totalPage) ? TEMPLATE.NEXT_DISABLE: TEMPLATE.NEXT_ENABLE


if(this.currentPage + this.offsetPage > this.totalPage - 1){
	
}else{
	if(this.currentPage + this.offsetPage < this.totalPage - 1){
		ELLIPSIS
	}else{
	
	}
	LAST_ENABLE
}

(cdsn的编辑器真不好用!)



ps:近日在36氪上看到一篇介绍去了Bookworm arXiv,看到几个jquery 插件,发现了jQuery Pagination,jquery 的分页插件,不错不错……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值