日期:2014-05-17  浏览次数:20752 次

关于分页显示的问题
这两天我做了一个人事管理系统,其中有一部门是对员工和部门进行CRUD操作,现在有个问题不知怎么解决了。在未分页之前,CRUD都没问题,但是在分页之后只有分页的功能能实现,修改和添加不能用了。是这样的,我用的是jsp+servlet+mySQL。当要显示所有员工信息时,在servlet中调用dao的一个函数显示所有员工信息,传入一个当前页号参数currentPageNum,假如页面大小为5,没问题,分页成功显示,但是当我去修改某员工信息的时候,提交到servlet时就必须传入该条记录所在的页号,这个页号怎么计算?而且还要考虑到,如果员工的编号用1,2,3,。。。没问题,用员工id/5+1就可以得到该条记录所在的页号,但假如员工编号不是从1开始,比如1001,那该怎么计算?假如员工编号不是按序的,如1,2,4,6,。。。又该怎么得到该条记录所在的页号?因为修改后我需要看到该条记录在当前页号的新信息。当然,我也可以不这么做,直接跳到另外一个界面,比如修改成功的界面,但这样就不太友好了不是。请教各位老大给予解决,或者更好的分页方法。

------解决方案--------------------
你这分页时用的操作就有点问题,导致以后出现难题。。。
------解决方案--------------------
我用分页不是把页号作为数据记录的一项,是把数据取出来然后根据每页显示的条数计算出来有多少页,我的方法参考下吧,不知道是不是你想要的结果:
Java code

ListAction.java



package com.sy.action;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.sy.dao.AdminDao;
import com.sy.dao.NewsDao;
import com.sy.dao.impl.AdminDaoImpl;
import com.sy.dao.impl.NewsDaoImpl;
import com.sy.vo.Admin;
import com.sy.vo.News;

public class ListAction extends ActionSupport {

    private static final long serialVersionUID = 1L;
        int i=1;//中间变量
    private int k;//储存最大页面数
    private int pageNow=1; //页码数,初始为1
    private int pageSize = 5 ; //页面行数 
    private int intRowCount;//总行数
    private int intPageCount;//总页数
    private Admin admin;
    private List<Admin> Adminss;
    private News news;
    @SuppressWarnings("unchecked")
    private List<News> Newss;
    
    private int id;
    private int aid;

    public News getNews() {
        return news;
    }

    public void setNews(News news) {
        this.news = news;
    }

    @SuppressWarnings("unchecked")
    public List<News> getNewss() {
        return Newss;
    }
    public void setNewss(List<News> newss) {
        Newss = newss;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    public Admin getAdmin() {
        return admin;
    }

    public void setAdmin(Admin admin) {
        this.admin = admin;
    }

    public List<Admin> getAdminss() {
        return Adminss;
    }

    public void setAdminss(List<Admin> adminss) {
        Adminss = adminss;
    }
    public int getAid() {
        return aid;
    }

    public void setAid(int aid) {
        this.aid = aid;
    }

    public int getPageNow() {
        return pageNow;
    }

    public void setPageNow(int pageNow) {
        this.pageNow = pageNow;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public int getIntRowCount() {
        return intRowCount;
    }

    public void setIntRowCount(int intRowCount) {
        this.intRowCount = intRowCount;
    }

    public int getIntPageCount() {
        return intPageCount;
    }

    public void setIntPageCount(int intPageCount) {
        this.intPageCount = intPageCount;
    }
    public int getK() {
        return k;
    }

    public void setK(int k) {
        this.k = k;
    }
@SuppressWarnings("unchecked")
    @Override
//显示新闻列表
    public String execute() throws Exception {

        NewsDao npage=new NewsDaoImpl();
        intRowCount=npage.count();
        k=(intRowCount + pageSize - 1) / pageSize;
        intPageCount = (intRowCount + pageSize - 1) / pageSize;//计算出总页数
        if(pageNow<1){
            pageNow=1;
        }
        
        if(pageNow > intPageCount)
             pageNow=intPageCount;
             i = (pageNow -1)*pageSize;
        NewsDao nlist=new NewsDaoImpl();
        if(null!=nlist.queryByPage(i,pageSize)){
        Newss = nlist.queryByPage(i,pageSize);
            return SUCCESS;
        }else{
            return "failure";
        }
    }
          ..
}

listNews.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="s