我作了一个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>
望各位多多指教.....