<s:if test="%{pages.pageno>1}">
<a href="<s:url action="blog/my"/>?uid=<s:property value="#user.id" />&page=<s:property value="pages.pageno-1"/>">上一页</a>
</s:if>
<s:iterator value="#request.pages.pagelist" status="stuts">
<s:if test="%{value==page}">
<a href="<s:url action="blog/my"/>?uid=<s:property value="#user.id" />&page=<s:property value="value"/>"
class="now"><s:property value="value" /> </a>
</s:if>
<s:else>
<a href="<s:url action="blog/my"/>?uid=<s:property value="#user.id" />&page=<s:property value="value"/>"><s:property
value="value" /> </a>
</s:else>
</s:iterator>
<s:if test="%{pages.pagecount>pages.pageno}">
<a href="<s:url action="blog/my"/>?uid=<s:property value="#user.id" />&page=<s:property value="pages.pageno+1"/>">下一页</a>
</s:if>我第一次点下页时候能成功 但再点上页或是下页时候报 404错误  我找了一下原因是url的问题
第一次时URL为http://localhost:8090/message/MessageAction.action?page=2 能成功
第二次时候 URL为 http://localhost:8090/message/MessageAction.action?page=2?page=3 失败
为什么两次请求URL后面传的数据 叠加了呢 
各位大侠帮小弟看看 

解决方案 »

  1.   

    你用pager-taglib分页吗?
    我个人是喜欢用sql语句,这是我的分页代码:
    前台jsp:
    <center>
    <br>

    <s:property value="pageBean.allRow" />
    条记录&nbsp;&nbsp;&nbsp;&nbsp;共
    <s:property value="pageBean.totalPage" />
    页&nbsp;&nbsp;&nbsp;&nbsp;当前第
    <s:property value="pageBean.currentPage" />

    <br>
    <br>
    <br> <s:if test="%{pageBean.currentPage == 1}">
          第一页&nbsp;&nbsp;上一页&nbsp;&nbsp;
        </s:if>
    <s:else>
    <a href="listUser.action?page=1">第一页</a>&nbsp;&nbsp;
    <a
    href="listUser.action?page=<s:property value="%{pageBean.currentPage-1}"/>">上一页</a>&nbsp;&nbsp;
    </s:else>
    <s:if test="%{pageBean.currentPage != pageBean.totalPage}">
    <a
    href="listUser.action?page=<s:property value="%{pageBean.currentPage+1}"/>">下一页</a>&nbsp;&nbsp;
    <a
    href="listUser.action?page=<s:property value="pageBean.totalPage"/>">最后一页</a>&nbsp;&nbsp;
    跳转到第<s:select list="pageBean.pageList" name="pageInput"></s:select>页
    </s:if>
    <s:else>
          下一页&nbsp;&nbsp;最后一页&nbsp;&nbsp;跳转到第<s:select
    list="pageBean.pageList" name="pageInput"></s:select>页
        </s:else>
    </center>
    实现分页类:
    public PageBean queryForPage(int pageSize, int page) { final String hql = "from User";// 查询语句
    int allRow = this.userDao.count();// 总记录数
    int totalPage = PageBean.countTotalPage(pageSize, allRow);// 总页数
    final int offset = PageBean.countOffset(pageSize, page);// 当前页开始记录
    final int length = pageSize;// 每页记录数
    final int currentPage = PageBean.countCurrentPage(page);
    List<User> list = this.userDao.findAllUsers(hql, offset, length);// "一页"的记录
    //设置一个页面list
    List pageList = new ArrayList();
    //把记录添加到list中
    for (int i = 0; i < totalPage; i++) {
    pageList.add(i, i + 1);
    } // 把分页信息保存到Bean中
    PageBean pageBean = new PageBean();
    pageBean.setPageSize(pageSize);
    pageBean.setCurrentPage(currentPage);
    pageBean.setAllRow(allRow);
    pageBean.setTotalPage(totalPage);
    pageBean.setList(list);
    pageBean.setPageList(pageList);
    pageBean.init();
    return pageBean;
    }
    PageBean:
    public class PageBean { private List<User> list;// 要返回的某一页的记录列表

    @SuppressWarnings("unchecked")
    private List pageList;//返回一个页数的list private int allRow; // 总记录数
    private int totalPage;// 总页数
    private int currentPage;// 当前页
    private int pageSize;// 每页记录数 @SuppressWarnings("unused")
    private boolean isFirstPage;// 是否为第一页
    @SuppressWarnings("unused")
    private boolean isLastPage;// 是否为最后一页
    @SuppressWarnings("unused")
    private boolean hasPreviousPage;// 是否有前一页
    @SuppressWarnings("unused")
    private boolean hasNextPage;// 是否有下一页 public List<User> getList() {
    return this.list;
    } public void setList(List<User> list) {
    this.list = list;
    } public int getAllRow() {
    return this.allRow;
    } public void setAllRow(int allRow) {
    this.allRow = allRow;
    } public int getTotalPage() {
    return totalPage;
    } public void setTotalPage(int totalPage) {
    this.totalPage = totalPage;
    } public int getCurrentPage() {
    return currentPage;
    } public void setCurrentPage(int currentPage) {
    this.currentPage = currentPage;
    } public int getPageSize() {
    return this.pageSize;
    } public void setPageSize(int pageSize) {
    this.pageSize = pageSize;
    } /** */
    /**
     * * 初始化分页信息
     */
    public void init() {
    this.isFirstPage = isFirstPage();
    this.isLastPage = isLastPage();
    this.hasPreviousPage = isHasPreviousPage();
    this.hasNextPage = isHasNextPage();
    } /** */
    /**
     * * 以下判断页的信息,只需getter方法(is方法)即可 *
     * 
     * @return
     */ public boolean isFirstPage() {
    return currentPage == 1;// 如是当前页是第1页
    } public boolean isLastPage() {
    return currentPage == totalPage;// 如果当前页是最后一页
    } public boolean isHasPreviousPage() {
    return currentPage != 1;// 只要当前页不是第1页
    } public boolean isHasNextPage() {
    return currentPage != totalPage;// 只要当前页不是最后1页
    } /** */
    /**
     * * 计算总页数,静态方法,供外部直接通过类名调用 *
     * 
     * @param pageSize
     *            每页记录数 *
     * @param allRow
     *            总记录数 *
     * @return 总页数
     */
    public static int countTotalPage(final int pageSize, final int allRow) {
    int totalPage = allRow % pageSize == 0 ? allRow / pageSize : allRow
    / pageSize + 1;
    return totalPage;
    } /** */
    /**
     * * 计算当前页开始记录 *
     * 
     * @param pageSize
     *            每页记录数 *
     * @param currentPage
     *            当前第几页 *
     * @return 当前页开始记录号
     */
    public static int countOffset(final int pageSize, final int currentPage) {
    final int offset = pageSize * (currentPage - 1);
    return offset;
    } /** */
    /**
     * * 计算当前页,若为0或者请求的URL中没有"?page=",则用1代替 *
     * 
     * @param page
     *            传入的参数(可能为空,即0,则返回1) *
     * @return 当前页
     */
    public static int countCurrentPage(int page) {
    final int curPage = (page == 0 ? 1 : page);
    return curPage;
    } @SuppressWarnings("unchecked")
    public List getPageList() {
    return pageList;
    } @SuppressWarnings("unchecked")
    public void setPageList(List pageList) {
    this.pageList = pageList;
    }
    }执行action:
    public String execute() throws Exception {
    //Map request = (Map) ActionContext.getContext().get("request");
    //request.put("list", this.service.findAllUsers());
    // 分页的pageBean,参数pageSize表示每页显示记录数,page为当前页
    this.pageBean = this.service.queryForPage(5, page); return SUCCESS;
    }