1. page.ftl文件
<#--
page 当前页码
totalpage 总页数
pageCount 每页条数
goUrl 分页请求url
-->
<#macro p page totalpage>
<#assign ipage=page>
<#assign pCount=10>
<#if(totalpage>9)>
<ahref="javascript:pagination('1')">首页</a>
</#if>
<#-- 前一页 -->
<#if ipage gt 1>
<a href="javascript:pagination('${ipage -1}')">前页</a>
<#else>
<spanclass="disabled">前页</span>
</#if>
<#if(totalpage<10)> <#-->总页数小于10的情况每页都显示<-->
<#list 1..totalpage as plist>
<#if plist==ipage>
<span class="current">${plist}</span>
<#else>
<ahref="javascript:pagination('${plist}')">${plist}</a>
</#if>
</#list>
<#else>
<#assignstart=ipage-4>
<#if(start<1)>
<#assignstart=1>
</#if>
<#assign end=start+8>
<#if(end>totalpage)>
<#assign end =totalpage>
<#assign start =end-8>
<#if (start<1)>
<#assignstart=1>
</#if>
</#if>
<#liststart..end as plist>
<#if plist==ipage>
<span class="current">${plist}</span>
<#else>
<ahref="javascript:pagination('${plist}')">${plist}</a>
</#if>
</#list>
</#if>
<#-- 后一页 -->
<#if ipage lt totalpage>
<a href="javascript:pagination('${ipage +1}')">后页</a>
<#else>
<spanclass="disabled">后页</span>
</#if>
<#if(totalpage>9)>
<ahref="javascript:pagination('${totalpage}')">末页</a>
</#if>
共${totalpage}页
<scriptlanguage="javascript">
function pagination(no){
document.form.action="${goUrl}?pageCount=${pCount}&totalpage=${totalpage}&page="+no;
document.form.submit();
}
</script>
</#macro>
2. jsp页面
引入模板
<#import "*/pages/page.ftl" aspager>
在显示分页处添加
<divclass=pagination><@pager.p page=pagetotalpage=totalpage/></div>
页面中添加form用于提交查询条件,注意name要和上面定义的一致
<formname="form" method="post">
<INPUT TYPE="hidden"NAME="postdata" value='${postdata !""}'>
</form>
css定义:
.pagination {
padding: 10px;float:right;font-size:12px;
}
.pagination a, .pagination a:link, .pagination a:visited {
padding: 2px 5px;margin: 2px;border: 1px solid#aaaadd;text-decoration: none;color: #006699;
}
.pagination a:hover, .pagination a:active {
border: 1px solid #ff0000;color:#000;text-decoration: none;
}
.pagination span.current {
padding: 2px 5px;margin: 2px;border: 1px solid#aaaadd;font-weight: bold;background-color: #336699;color:#FFF;
}
.pagination span.disabled {
padding: 2px 5px;margin: 2px;border: 1px solid#eee; color: #ddd;
}
3. action
public class PageAction extends ActionSupport {
private static final long serialVersionUID =6522655786306820295L;
protected Integer totalpage;//总页数
protected Integer page;//当前页
protected Integer pageCount;//每页数
protected String goUrl;
public void prepare() throws Exception {
super.prepare();
if(page==null||page.equals("")||page==0)page=1;
if(pageCount==null||pageCount.equals("")||pageCount==0)pageCount=10;
}
public boolean getTotal()
{
return(totalpage==null||totalpage.equals("")||totalpage==0);
}
public void setTotalpage(Integer totalpage){
this.totalpage =totalpage;
}
public Integer getTotalpage() {
return totalpage;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getPage() {
return page;
}
public void setPageCount(int pageCount) {
this.pageCount =pageCount;
}
public int getPageCount() {
return pageCount;
}
public void setGoUrl(String goUrl) {
this.goUrl = goUrl;
}
public String getGoUrl() {
return goUrl;
}
}
public class StaffAction extends PageAction {
private static final long serialVersionUID =-6987816268505928087L;
private IManagerStaff managerStaff;
privateList<Staff> stafflist;
public void prepare() throws Exception {
super.prepare();
managerStaff=(IManagerStaff)this.context.getBean("managerStaff");
}
public String Query()
{
return"Query";
}
public String List()
{
//总页数为空时先查询总页数
if(getTotal())totalpage=managerStaff.getTotalPage(pageCount);
goUrl="StaffList.action";
stafflist=managerStaff.List(page,pageCount);
return "List";
}
public voidsetStafflist(List<Staff> stafflist){
this.stafflist =stafflist;
}
public List<Staff>getStafflist() {
return stafflist;
}
}