例如:
可以redirect 到以下URL:
http://cuishen.iteye.com/APP/test.jsp
但是无法redirect 到超出APP的URL:
http://cuishen.iteye.com/test.html
具体见下面代码:
@see org.apache.struts.action.RequestProcessor /* 447*/ if(forward.getRedirect()) { //斜杠开头的URL会自动加上APP名的 /* 449*/ if(uri.startsWith("/")) /* 450*/ uri = request.getContextPath() + uri; /* 452*/ response.sendRedirect(response.encodeRedirectURL(uri)); } else { /* 455*/ doForward(uri, request, response); }
而且注意,如果不指定具体的action type,redirect是不起作用的!
例如下面的action例子,redirect不工作,因为没有指定具体的type:
<action path="/user/ErrorPage" forward="/WEB-INF/jsp/ServerError.jsp" redirect="true"/>
要让redirect工作,应该像下面这样配置:
<action path="/user/ErrorPage" type="xxx.xxx.XxxAction"> <forward name="success" path="/ServerError.jsp" redirect="true"/> </action>
具体参见RequestProcessor的代码。