初学ssh 基于注解的方式简单灵活,但是做一个例子的时候,添加用户AddUser 完成后 想页面跳转到 ListUser 这个action,

然后action 成功后 会跳转到list.jsp 显示 所以用户信息,

发现 网上几乎所有例子都是 @Result 成功跳转到一个jsp ,不成功跳转到另一个jsp

@Action(value="studentAdd",results={
@Result(name="success",location="/usersuc.jsp"),
@Result(name="error",location="/usererror.jsp")
})

那么如果 成功跳转到另一action个 怎么写呢,搜了半天 也没有想要的答案  就自己尝试

@Action(value="studentAdd",results={

@Result(name="success",location="/StudentList.action"),

@Result(name="error",location="/error.jsp")}) 

这是错的 ,tomcat启动时 直接就报错 Exception starting filter struts2 , Unable to load configuration. - [unknown location]

如果不加 .action 后缀

@Action(value="studentAdd",results={

@Result(name="success",location="/StudentList"),

@Result(name="error",location="/error.jsp")}) 

这样虽然tomcat启动时不报错,但是添加用户页面成功,不成功会显示404错误 找不到action,偶然在一片文章中看到

struts2 跳转类型 result type=chain、dispatcher、redirect(redirect-action)

dispatcher 为默认跳转类型,用于返回一个视图资源(如:jsp)
Xml代码 :

<result name="success">/main.jsp</result>
其完整的写法为:
    <result name="success" type="dispatcher">
      <param name="location">/maini.jsp</param>
    </result>

用于页面转发,页面跳转过程一直是同一个线程,Action中的数据一直保存在。
location只能是页面,不能是另一个action(可用type="chain"解决)。

redirect 类型用于重定向到一个页面,另一个action或一个网址。
Xml代码:

    <result name="success" type="redirect">aaa.jsp</result>
<result name="success" type="redirect">bbb.action</result>
<result name="success" type="redirect">www.baidu.com</result>

缺点:redirect把一个http返回码(SUCCESS)以及返回的页面位置一起重新发给web服务器,容纳后由web服务器产生一个新的HTTP请求,就会产生一个新的线程,保存在原来Action执行的线程中的数据就无法访问。
所以,result需要包含Action的数据,那么redirect不是一个可行的办法。因为新的HTTP请求时在Servlet容器的新的线程中处理的,ActionContext中的所有状态都不会存在。

处理方法:

//(方法一):
<result name="topic" type="redirect">/topicAction!findTopics.do?topicId=${topicId}</result>
//(方法二):
<result name="topic" type="redirect-action">
<param name="actionName">findTopics</param>
<param name="topicId">${topicId}</param>
</result>

redirect-action 结果类型使用ActionMapperFactory提供的ActionMapper来重定向请求到另外一个action
Xml代码:

  <result name="err" type="redirect-action">
<param name="actionName">重定向的Action名</param>
<param name="namespace">重定向Action所在的名字空间</param>
</result>

redirect和redirect-action两种结果类型在使用上其实并没有什么区别,只是写法不同而已。

chain 用于把相关的几个action连接起来,共同完成一个功能。
Xml代码:

<action name="step1" class="test.Step1Action">
<result name="success" type="chain">step2.action</result>
</action>
<action name="step2" class="test.Step2Action">
<result name="success">finish.jsp</result>
</action>

处于chain中的action属于同一个http请求,共享一个ActionContext
plaintextj 结果类型用于直接在页面上显示源代码

Xml代码:

    <result name="err" type="plaintext">
<param name="location">具体的位置</param>
<param name="charSet">字符规范(如GBK)</param>
</result>

既然这样 制定跳转类型 是不是就可以了呢, 找下面来写 果然就OK了

@Action(value="studentAdd",results={
@Result(name="success",type="chain",location="studentList")})

另外补充:同一个action中  一个方法跳转至另一个方法 "user"  为该action的命名

@Result(name = "success", location = "user", type = "chain", params = { "method", "index" })

最新文章

  1. HTML+JS+DOM【选项卡自动切换】
  2. javamail 收邮件并解析附件
  3. 获取客户端真实ip
  4. 转载__Android开源项目(二)
  5. 磁珠 磁环 双向二极管 TVS二极管
  6. 【leetcode】7. Reverse Integer
  7. CURL与PHP-CLI的应用【CLI篇】
  8. String类的split方法以及StringTokenizer
  9. 巧用powerpoint制作符合期刊要求的复合图
  10. js中&amp;&amp; 和 ||
  11. Delphi主窗口任务栏菜单的问题(转发WM_SYSCOMMAND到Application)
  12. 所谓策略,我站在旁边看今天 神刻的样子O2O
  13. ArcGIS 网络分析[8.5] 资料5 网络分析拓展模块及各种接口说明
  14. 漫谈android系统(4)bring up panel
  15. CentOS7下Django环境的搭建安装python3.6.5,virtualenv django1.11.14
  16. yaf项目将500错误打印到页面上
  17. BZOJ2141排队——树状数组套权值线段树(带修改的主席树)
  18. Number (int float bool complex)--》int 整型、二进制整型、八进制整型、十六进制整型
  19. 遍历DOM树,理解更新范围
  20. How to Pronounce EVERY

热门文章

  1. Android 如何查看源码 (eclipse 按住 ctrl )
  2. Delphi XE7中开发安卓程序一些有用的帮助资源
  3. A - 畅通工程 (并查集)
  4. NOI2019省选模拟赛 第五场
  5. html实现时间输入框
  6. 《快学Scala》第二章 控制结构和函数
  7. jdk完全卸载(亲测jdk1.7.0_80在win7)
  8. AI 的下一个重大挑战:理解语言的细微差别
  9. GPS坐标转百度地图坐标
  10. 4、2支持向量机SVM算法实践