我是靠谱客的博主 落寞寒风,最近开发中收集的这篇文章主要介绍Struts2 action跳转及重复执行,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、action跳转

1、在不使用chain的情况下,从一个action进入另一个action

 

解决方案1:使用redirectAction方式。例子如下:

<action name="insertAnswer" class="answerAction" method="insertAnswer">
      <result name="success" type="redirectAction">
           <param name="actionName">getQuestionByNumber</param>
           <param name="namespace">/front</param>
<!--  需要传入第二个action的请求参数number,其值为nextQuestionNumber。下面取值的写法使用JSTL方式。 -->

<!--  如果有多个参数,则添加多个 <param/>标签  -->

           <param name="number">${nextQuestionNumber}</param>
   </result>
  <result name = "error">/error.jsp</result>
</action>

   

解决方案2:使用redirect方式。例子如下:

<action name="insertAnswer" class="answerAction" method="insertAnswer">
   <result name="success" type="redirect">
    /front/getQuestionByNumber.action?number=${nextQuestionNumber}
   </result>
 <result name = "error">/error.jsp</result>
</action>

同理。number为参数,nextQuestionNumber为参数值。如果需要传入多个参数,则需要使用"&amp;"代替"&"。如:

/front/getQuestionByNumber.action?number=${nextQuestionNumber}&amp;endTime=${endTime}

1、一个action在不同的条件下有两个不同的跳转

解决方案1:在struts.xml中定义两个不同名但在同一命名空间的action,调用的方法也一样。如下:

<action name="insertAnswer" class="answerAction" method="insertAnswer">

  ...

</action>

 

<action name="lastInsertAnswer" class="answerAction" method="insertAnswer">

  ...

</action>

解决方案2:在struts.xml中定义一个action,但拥有至少两个<result/>,这两个result要拥有不同的跳转。在action的Java类中,根据传入的参数不同,在同一个action中逻辑处理结束需要返回字符串值时,做一个判断,进入不同的结束字符串。例子如下:

<action name="insertAnswer" class="answerAction" method="insertAnswer">

  <!--  第一个跳转 -->

  <result name="success" type="redirect">
    /front/getQuestionByNumber.action?number=${nextQuestionNumber}
   </result>
   

<!--  第二个跳转 -->
   <result name="end" type="redirect">
    /front/updateExaminee.action?end=${endTime}
   </result>

 

   <result name = "error">/error.jsp</result>
 </action>

 

二:action重复执行

错误思想:原因为定义了两个相同方法但不同名的action。

正确想法:form中是否使用了submit按钮,但在该按钮还有一个onclick事件,该事件触发一个JavaScript方法,该方法又一次提交form。这样会导致action执行两次。

 

查询得到的一些有结论:

1.  json格式下, firefox中的yslow插件会发送第二个 HTTP GET 请求得到页面的信息.

2.  ajax模式下,调用的action方法不能为get*方式命名,内中机理未研究

最后

以上就是落寞寒风为你收集整理的Struts2 action跳转及重复执行的全部内容,希望文章能够帮你解决Struts2 action跳转及重复执行所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部