为什么我的分页不能运行??
我作了一个struts的分页程序,可以显示第一页和 "下一页 "链接,可是在点击 "下一页 "运行时就出差了,调试发现是页面的数据没有传回Action,请问各们大虾这是怎么回事,小弟我弄了好久了呀.....
源码如下:
数据库mysql:
create table book(name varchar(50), author varchar(30), price int);
bean:(其中PageBean用于处理分页)
Book.java
public class Book {
private String bookName;
private String author;
private int price;
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
PageBean.java
import java.sql.SQLException;
import java.util.ArrayList;
public class PageBean {
private static int record = 5;
private int currentPage = 1;
private int totalPages = 0;
private int totalRecords = 0;
private int pageStart = 0;
private int pageEnd = 0;
private boolean hasNext = false;
private boolean hasPrev = false;
private static ArrayList list;
public PageBean() {
}
public PageBean(ArrayList list) {
this.list = list;
totalRecords = list.size();
setCurrentPage(1);
setTotalPages();
setPageStart();
setPageEnd();
setHasNext(true);
}
public Book[] getPreviousPage() {
if (currentPage < totalPages) {
hasNext = true;
} else
hasNext = false;
currentPage -= 1;
if (currentPage <= 0) {
currentPage = 1;
hasPrev = false;
} else
hasPrev = true;
pageStart = (currentPage - 1) * record + 1;
pageEnd = pageStart + record - 1;
return getBooks();
}
public Book[] getNextpage() {
if (currentPage - 1 > 0) {
hasPrev = true;
} else
hasPrev = false;
currentPage += 1;
if (currentPage > totalPages) {
currentPage = totalPages;
hasNext = false;
} else {
hasNext = true;
pageStart = (currentPage - 1) * record + 1;
if (currentPage == totalPages) {
pageEnd = totalRecords;
} else {
pageEnd = pageStart + record - 1;
}
}
return getBooks();
}
public Book[] getBooks() {
Book[] books = new Book[pageEnd - pageStart + 1];
int i = pageStart - 1;
int j = 0;
for (; i < pageEnd; i++) {
books[j] = (Book) list.get(i);
j++;
}
return books;
}
public int getRecord() {
return record;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public boolean isHasNext() {
return hasNext;
}
public void setHasNext(boolean hasNext) {
this.hasNext = hasNext;
}
public boolean isHasPrev() {
return hasPrev;
}
public void setHasPrev(boolean hasPrev) {
this.hasPrev = hasPrev;
}
public int getPageEnd() {
return pageEnd;
}
public void setPageEnd() {
if (currentPage == totalPages) {
pageEnd = totalRecords;
} else
pageEnd = pageStart + record - 1;
}
public int getPageStart() {
return pageStart;
}
public void setPageStart() {
pageStart = (currentPage - 1) * record + 1;
}
public int getTotalPages() {
return totalPages;
}
public void setTotalPages() {
if (totalRecords % record == 0) {
totalPages = totalRecords / record;
} else
totalPages = 1 + totalRecords / record;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
}
Action:
PageAction.java
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import xiao.bean.Book;
import xiao.bean.PageBean;
import xiao.dao.BookDao;
import com.yourcompany.struts.form.PageForm;
public class PageAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String action = request.getParameter( "action ");
PageBean page = new PageBean();
int record = page.getRecord();
Book book[] = null;
if (action == null || action.equals( "null ")) {
String sql = "select*from book ";
ArrayList arrayList = new ArrayList();
try {
arrayList = BookDao.showAll(sql);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
page = new PageBean(arrayList);
book = page.getBooks();
} else {
page = (PageBean)request.getAttribute( "page ");
if (action == "previousPage " || action.equals( "previousPage ")) {
book = page.getPreviousPage();
}
if (action == "nextPage " || action.equals( "nextPage ")) {
book = page.getNextpage();
}
}
ArrayList list = new ArrayList();
for (int i = 0; i < record; i++) {
list.add(book[i]);
}
request.setAttribute( "list ", list);
request.setAttribute( "page ", page);
return mapping.findForward( "sucess ");
}
}
jsp页面代码:
Show.jsp
<%@ page language= "java " pageEncoding= "GBK "%>
<jsp:directive.page import= "xiao.bean.PageBean " />
<jsp:directive.page import= "xiao.bean.Book " />
<%@ taglib uri= "http://jakarta.apache.org/struts/tags-bean "
prefix= "bean "%>
<%@ taglib uri= "http://jakarta.apache.org/struts/tags-html "
prefix= "html "%>
<%@ taglib uri= "http://jakarta.apache.org/struts/tags-logic "
prefix= "logic "%>
<%@ taglib uri= "http://jakarta.apache.org/struts/tags-tiles "
prefix= "tiles "%>
<%@ taglib uri= "http://jakarta.apache.org/struts/tags-template "
prefix= "template "%>
<%@ taglib uri= "http://jakarta.apache.org/struts/tags-nested "
prefix= "nested "%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN ">
<html:html locale= "true ">
<head>
<html:base />
<title> 显示每页 </title>
<meta http-equiv= "pragma " content= "no-cache ">
<meta http-equiv= "cache-control " content= "no-cache ">
<meta http-equiv= "expires " content= "0 ">
<meta http-equiv= "keywords " content= "keyword1,keyword2,keyword3 ">
<meta http-equiv= "description " content= "This is my page ">
<!--
<link rel= "stylesheet " type= "text/css " href= "styles.css ">
-->
</head>
<body>
<table align= "center ">
<tr align= "center ">
<td align= "center ">
Book Name
</td>
<td align= "center ">
Author
</td>
<td align= "center ">
Price
</td>
</tr>
<logic:present name= "list ">
<logic:iterate id= "book " name= "list " type= "xiao.bean.Book ">
<logic:present name= "book ">
<tr>
<td align= "left "> <bean:write name= "book " property= "bookName " />
</td>
<td align= "left ">
<bean:write name= "book " property= "author " />
</td>
<td align= "right ">
<bean:write name= "book " property= "price " />
</td>
</tr>
</logic:present>
</logic:iterate>
</logic:present>
<logic:present name= "page " scope= "request ">
<tr width= "800 ">
<td height= "25 " align= "center " colspan= "3 ">
共有
<bean:write name= "page " property= "totalRecords " />
条记录 共分
<bean:write name= "page " property= "totalPages " />
页 当前是第
<bean:write name= "page " property= "currentPage " />
页
<logic:equal name= "page " property= "hasPrev " value= "true ">
<html:link page= "/page.do?action=previousPage "> 上一页 </html:link>
</logic:equal>
<logic:equal name= "page " property= "hasNext " value= "true ">
<html:link page= "/page.do?action=nextPage "> 下一页 </html:link>
</logic:equal>
</td>
</tr>
</logic:present>
</table>
</body>
</html:html>
望各位多多指教.....
[解决办法]
自己多调试一下,这是锻炼自己的好机会,我也调了很久分页才成功。