Struts2 action跳转及重复执行
2010-06-05 13:40
453 查看
一、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为参数值。如果需要传入多个参数,则需要使用"&"代替"&"。如:
/front/getQuestionByNumber.action?number=${nextQuestionNumber}&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*方式命名,内中机理未研究
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为参数值。如果需要传入多个参数,则需要使用"&"代替"&"。如:
/front/getQuestionByNumber.action?number=${nextQuestionNumber}&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中关于值跳转input,而不执行action的问题
- struts2的action中方法重复执行
- struts2当前Action执行成功后跳转到另一个Action
- [SSH]No result defined for action and result input 和 Struts2中关于值跳转input,而不执行action的问题
- struts2的action执行后跳转到另一个action
- Struts2 只执行Action 页面不跳转 AJAX请求 序列化
- struts2首页跳转后执行action
- struts2当前Action执行成功后跳转到另一个Action
- struts2 action重复执行的解决方案
- struts2 action跳转action 的配置方法
- Struts2 注解中跳转 action
- struts2 action配置时 method 省略不写 默认执行方法是父类ActionSuppot中的execute()方法
- struts2 跳转类型 result type=chain、dispatcher、redirect(redirect-action)
- struts2中action跳转到另一个action的方法
- struts2 action跳转指向action
- struts2 从一个action 跳转到另一个action的两种方法
- 道听途说Struts2之15:chain跳转到另外的一个包中的action
- strus2 action重复执行问题
- Struts2的convention插件,在步骤中使用Action注解跳转到其他jsp页面
- Struts2中action之间的跳转问题