日期:2014-05-20  浏览次数:20715 次

struts2执行跳转如何像servlet一样,直接forward或者redirect?
如题,我现在想要的结果是,在struts2的action执行方法中拼接出一个url,在执行完action后直接跳转到这个url即可,如果在struts.xml中配置?谢谢

------解决方案--------------------
给你代码参考下:
struts.xml里的:
XML code

....
 <action name="allBrandsFind" class="/control/product/allbrandsfinder">
      <result name="success">/WEB-INF/page/product/brandsinfo.jsp</result>
    </action>
    <action name="*BrandSave" class="/control/product/brandsaver" method="{1}">
      <!--  使用自定义的Store拦截器,再两个action中传递msg -->
      <param name="savePath">/upload</param>
      <result name="input">/WEB-INF/page/product/inputbrandsaver.jsp</result>
      <result name="success" type="redirectAction">
        <param name="ActionName">allBrandsFind</param>
      </result>
    </action>
....

------解决方案--------------------
思路:
1,将此url设制到一个变量中,如变量url
2,返回至一个通用跳转界面
3,读取url变量,直接跳转到相应界面

参考代码如下:(此处的url为自定义对象)
public class UrlSupport extends BaseAction{
/** 要转向的url地址 */
protected Url url;

public Url getUrl() {
return url;
}
}
通用跳转界面:
<s:if test="url != null">
<script type="text/javascript">
setTimeout(function() {
window.self.location.href = "<s:property value="url.url"/>";
}, <s:property value="url.millisecond"/>);
</script>
</s:if>
------解决方案--------------------
7楼和9楼正解,现在struts的action里定义一个url变量,在方法里拼完地址后
<action name="login" method="loginIn" class="loginAction">
<result name="success" type="redirect">${url}</result>
</action>

用这个就行了