使用的技术是Struts2+jsp
a.ction类用于查询数据,b.jsp页面用于展现数据。
a.action里有个int型计数器page,初始化值为0,有get set方法;
b.jsp上有一个“下一页”的按钮,每一次按下,就跳转到a.action查数据,同时page+1;
也就是说操作是a.action->b.jsp(按下一页按钮)->a.action->b.jsp(按下一页按钮)->a.action....
这样子
b.jsp上的page是通过<s:hidden id="page" name="page" value="%{page}"/>取得,以便于在按下“下一页”按钮的时候,该page值一起提交给a.action,做+1处理当我按照正常流程,一次一次地按下页面上的“下一页”按钮时,%{page}取到的值,按道理应该是0,1,2,3,4,5.这样子依次添加的数据,但是现在打印出来的值表明,这个%{page}的取值第一次是0,第二次是1,第三次变成了{1,0}这样的数组!!!这到底是怎么回事呢?难道这是struts2框架的特性吗?参数值更新后,不会覆盖原来的值,而是直接压栈么?调试了半天了,百思不得其解,google来google去也没找到这种类似问题的描述,请各位同仁看看问题可能出在什么地方。

解决方案 »

  1.   

    这个%{page}的取值第一次是0,第二次是1,第三次变成了{1,0}这样的数组!!!
    page是个string 怎么会编程{0,1}的数组呢?你action中的代码有问题吧,
    还有页面之间的操作,完全可以通过
    js + div来实现 不用经过action跳转.这样所有的数据全部在js中 更表便调试
      

  2.   

    +1操作是在action里进行的,代码就是
    page +=1; 为了简单起见,什么判断都去掉了在页面上用<s:property value="page"/>打印出来的,也是1,0这样的值
      

  3.   

    还有,page是int型的,绝对不是string或者数组型,我贴一下page的声明吧。
    private int page;

    public void setPage(int page) {
    this.page = page;
    }public int getPage() {
    return page;
    }这够简单了吧,可是不知道为什么会变成1,0这样子
      

  4.   

    很神奇的是,我在action里打印了page,是2,可是不知道为什么<s:property value="page"/>取到的是1,0
      

  5.   

    我怀疑问题出在<s:hidden id="page" name="page" value="#request.page"/>上,可是指定了ID还不能避免重复表单么?