Jakarta ee 范围拦截器Struts 2:后退按钮行为

Jakarta ee 范围拦截器Struts 2:后退按钮行为,jakarta-ee,struts2,scope,wizard,interceptor,Jakarta Ee,Struts2,Scope,Wizard,Interceptor,我想使用Scope interceptor在我的Struts2(2.2.3.1)应用程序中实现类似向导的功能 response.setHeader("Cache-Control", "no-cache, no-store"); //HTTP 1.1 response.setHeader("Pragma", "no-cache"); //HTTP 1.0 response.setDateHeader("Expires", 0); //prevents caching at the proxy se

我想使用Scope interceptor在我的Struts2(2.2.3.1)应用程序中实现类似向导的功能

response.setHeader("Cache-Control", "no-cache, no-store"); //HTTP 1.1
response.setHeader("Pragma", "no-cache"); //HTTP 1.0
response.setDateHeader("Expires", 0); //prevents caching at the proxy server   
我的struts.xml文件如下所示:

<action name="actionA class="classA" method="methodA">
    <interceptor-ref name="basicStack" />   
    <interceptor-ref name="scope">
        <param name="session">stringA</param>
        <param name="key">consultGuides</param>
        <param name="type">start</param>
    </interceptor-ref>      
    <result>/resultA.jsp</result>
</action>
<action name="actionB" class="classA" method="methodB">
    <interceptor-ref name="scope">
        <param name="session">stringA, listA</param>
        <param name="key">consultGuides</param>
        </interceptor-ref>
        <interceptor-ref name="basicStack" />               
        <result>/resultB.jsp</result>
</action>
    ....
    ....

为了在单击浏览器的“后退”或“前进”按钮后不允许缓存页面,您可以尝试在http响应中添加一些头,这样每次单击“后退”或“前进”按钮时都会清除缓存

如果您将其添加到拦截器中,这将非常有效

response.setHeader("Cache-Control", "no-cache, no-store"); //HTTP 1.1
response.setHeader("Pragma", "no-cache"); //HTTP 1.0
response.setDateHeader("Expires", 0); //prevents caching at the proxy server   
这样,按“上一步”按钮将不会加载缓存页面,但会向服务器发出新请求。
这应该可以解决您的问题。

我试着按“上一步”按钮从服务器获取页面。但是,即使手动刷新页面也不起作用,因为会话仍在继续,新值只是附加到会话中已有的变量中。