一般在list页面才要分页
1)所以加入一个参数来判断是否分页,如pageControll=true(当然可以不用,这步)
2)建一个转用的actionform(当然页可以是普通bean,我这里只是为了页面上少写scriplet) --网上找了个改造成自己想
要的 --PageController.java(见附)
3)在处理list的action代码里加入判断是否执行 PageController.java 里面的main()方法 如:
pageControll = request.getParameter("pageControll");
//In case the parameter is null
currentPage = (request.getParameter("currentPage") == null)?(new String("0")):request.getParameter("currentPage");
//change the String type to int
cPage = Integer.parseInt( currentPage );
//first get the borad and then get it's boardItems
boardItemsList = boardForm.getBoardItems();
//fen ye
if( pageControll != null && pageControll.equals("true") ) {
PageController pg = (new PageController()).main(boardItemsList,cPage);
request.setAttribute("PageControllerForm",pg);
}
在jsp页面上写:
<bean:define id="offset" name="PageControllerForm" property="pageStartRow" type="Integer"/>
<bean:define id="size" name="PageControllerForm" property="pageSize" type="Integer"/>
<bean:define id="previousPage" name="PageControllerForm" property="previousPage" type="Integer"/>
<bean:define id="nextPage" name="PageControllerForm" property="nextPage" type="Integer"/>
<bean:define id="totalPages" name="PageControllerForm" property="totalPages" type="Integer"/>
<% String url = "/do/BoardActions?method=listItems&pageControll=true¤tPage=";%>
<logic:equal name="PageControllerForm" property="hasPrevious" value="true">
<html:link page="<%=url+1%>" paramId="id" paramName="BoardForm" paramProperty="id">
<bean:message key="common.fenye.first"/>
</html:link>
<html:link page="<%=url+previousPage%>" paramId="id" paramName="BoardForm" paramProperty="id">
<bean:message key="common.fenye.previous"/>
</html:link>
</logic:equal>
<logic:equal name="PageControllerForm" property="hasNext" value="true">
<html:link page="<%=url+nextPage%>" paramId="id" paramName="BoardForm" paramProperty="id">
<bean:message key="common.fenye.next"/>
</html:link>
<html:link page="<%=url+totalPages%>" paramId="id" paramName="BoardForm" paramProperty="id">
<bean:message key="common.fenye.last"/>
</html:link>
</logic:equal>
<logic:iterate id="boarditems" name="BoardItemsList" offset="<%=offset.toString()%>" length="<%=size.toString()%>">
附:
package com.lpeng.base;
import java.util.List;
import org.apache.struts.action.ActionForm;
public class PageController extends ActionForm {
int totalRowsAmount; //总行数
boolean rowsAmountSet; //是否设置过totalRowsAmount 1
int pageSize=10; //每页行数
int currentPage=1; //当前页码
int nextPage;
int previousPage;
int totalPages; //总页数
boolean hasNext; //是否有下一页
boolean hasPrevious; //是否有前一页
//String description;
int pageStartRow; //开始行
int pageEndRow;
public PageController(int totalRows,int cPage){
setTotalRowsAmount(totalRows,cPage);
}
public PageController(){}
public int getTotalRowsAmount() {
return totalRowsAmount;
}
public void setTotalRowsAmount(int i,int j) {
if(!this.rowsAmountSet){
totalRowsAmount = i;
totalPages=totalRowsAmount/pageSize+1;
setCurrentPage((j == 0)?totalPages:j);
this.rowsAmountSet=true;
}
}
public boolean isRowsAmountSet() {
return rowsAmountSet;
}
public void setRowsAmountSet(boolean b) {
rowsAmountSet = b;
}
public void setCurrentPage(int i) {
currentPage = i;
nextPage=currentPage+1;
previousPage=currentPage-1;
//计算当前页开始行和结束行
if(currentPage*pageSize<totalRowsAmount){
pageEndRow=currentPage*pageSize;
pageStartRow=pageEndRow-pageSize;
}else{//for the last page,这里我是为了默认的那页(最后一页)不足pagesize时也能显示pagesize这么多。。。。。。。
pageEndRow=totalRowsAmount;
pageStartRow=pageEndRow-pageSize;
}
if (nextPage>totalPages){
hasNext=false;
}else{
hasNext=true;
}
if(previousPage==0){
hasPrevious=false;
}else{
hasPrevious=true;
}
}
public int getCurrentPage() {
return currentPage;
}
public boolean isHasNext() {
return hasNext;
}
public void setHasNext(boolean b) {
hasNext = b;
}
public boolean isHasPrevious() {
return hasPrevious;
}
public void setHasPrevious(boolean b) {
hasPrevious = b;
}
public int getNextPage() {
return nextPage;
}
public void setNextPage(int i) {
nextPage = i;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int i) {
pageSize = i;
}
public int getPreviousPage() {
return previousPage;
}
public void setPreviousPage(int i) {
previousPage = i;
}
public int getTotalPages() {
return totalPages;
}
public void setTotalPages(int i) {
totalPages = i;
}
public int getPageEndRow() {
return pageEndRow;
}
public void setPageEndRow( int pageEndRow ) {
this.pageEndRow = pageEndRow;
}
public int getPageStartRow() {
return pageStartRow;
}
public void setPageStartRow( int pageStartRow) {
this.pageStartRow = pageStartRow;
}
public PageController main(List list,int currentPage){
int rows = list.size();
PageController pc=new PageController(rows,currentPage);
return pc;
}
}