使用execAndWait拦截器可以在等待较长时间的后台处理中增加等待页面。
struts.xml中可定义如下:
- <action name="testAction" class="com.TestAction">
- <interceptor-ref name="execAndWait"></interceptor-ref>
- <result >success.jsp</result>
- <result name="wait">wait.jsp</result>
- </action>
wait.jsp如下:
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib prefix="s" uri="/struts-tags"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <meta http-equiv="refresh" content="5;url=<s:url includeParams="all"/> "/>
- <title><s:text name="title"></s:text></title>
- </head>
- <body>
- <h1>数据处理中,请稍等......</h1>
- <a href="<s:url includeParams="all" />"> 点这里 </a> 如果没有自动跳转请点击这里.
- </body>
- </html>
<meta http-equiv="refresh" content="5;url=<s:url includeParams="all"/> "/>为每隔5秒自动刷新定位到目标页面
如果浏览器不支持自动刷新,可以手动定位,如下:
<a href="<s:url includeParams="all" />"> 点这里 </a>
<s:url includeParams="all"/>
其中的includeParams参数取值为:
none,不把参数加入到url参数中
all,是把get和post中的参数加入到url参数中
get,是只把get中的参数加入到url参数中
注:在使用过程中发现一个问题,在使用struts总使用session的时候
Map session = ActionContext.getContext().getSession();
取到的session为null,原因尚不明确.