通俗一点,现在的很多web网站的分页显示数据问题,进行如下操作:
点击下一页,显示第二页内容,然后点击相关单条内容编辑,跳转一次action然后到编辑页面,编辑完成后,点击提交按钮,跳转一次action,回到未编辑前的当前显示的第二页的内容的页面。
问题出来了,如何保证该参数经过2次action后不丢失呢,可以在struts2配置文件中设置参数传递,但是这样每个配置文件中的action岂不是都要设置一遍,各位大神有没更好的方法呢,不胜感激!actionstrutsweb

解决方案 »

  1.   

    使用struts2如果不是跨action的话,是不需要传递参数的,当然按照设计原则来说,有数据相关性的请求也不应该跨action处理。通常来说,提交的信息对应着action里的属性,在页面直接使用property标签使用属性值就好,每次跳转页面事实上是加载新的页面,他会读出action对应属性的当前值。
      

  2.   

    将页码存入session中,在显示的action中判断
      

  3.   

    在struts2的配置文件中加入自定义拦截器栈,注意store,相关信息自行查询下,如                <interceptor-stack name="myStack">
            <interceptor-ref name="paramsPrepareParamsStack"/>
            <interceptor-ref name="store">
         <param name="operationMode">AUTOMATIC</param>
    </interceptor-ref>
               </interceptor-stack>
     
      

  4.   

    存到session中有试过,但是毕竟不好吧 呵呵,我这里说的是有没有一个最优的方法呢,一楼的话,其实就是跨action传递参数... 还是感谢大家的热心回答,拦截器里面存储参数,我还真没试过,我去查查去
      

  5.   

    如果是跨action传参数的话,J2EE企业级设计标准有三种解决方案。
    最差的一种,写在隐藏域或者写在请求连接后,因为会把信息直接暴露给客户端,所以虽然使用方便但是不被推荐。
    好一些的,是存在客户端cookie中,因为每次需要到客户端进行文件io操作同时需要传输到服务端进行使用,所以读存效率和传输效率受客户端限制过大,难以保证。
    最好的就是存于服务端,一般有两种方式:存在session里,这个就是一个常用解决方案,效率没什么问题,但是要注意存储量的问题,因为session是存储于内存中,所以如果是大数据量存储会过于消耗服务端资源,这种情况下,就序列化后存到数据库中,也就是数据存储于服务端的第二种方式。