当Action类的方法处理请求后,会返回一个字符串(逻辑视图名),框架根据这个结果码选择对应的result,向用户输出,所以需要在struts.xml提供<result>元素定义结果页面,这个结果页面可以是局部结果页面或者全局结果页面。

1、 局部结果页面和全局结果页面

1)局部结果页面

 <action name="result" class="cn.sunny.action.ResultAction">
<!-- 局部结果当前Action使用 -->
<result name="success">/result.jsp</result>
</action>

2)全局结果页面

 <global-results>
<!-- 全局结果 当前包中 所有Action都可以用-->
<result name="success">/result.jsp</result>
</global-results>
  • 如果Struts2程序在运行过程中发现addFieldError()中有信息或类型转换失败或输入校验失败等情况,那么它会自动跳转到name值为input的结果页面中,如果没有提供name值为input的<result>,那么发生错误时,将直接在浏览器中提示404错误;
  • 如果jsp页面中表单是用普通<form>编写的,发生错误而返回该页面时,则原数据将消失
  • 如果jsp页面中表单是用<s:form>编写的,发生错误而返回该页面时,则原数据仍存在

2、结果页面跳转类型

在struts-default.xml定义了一些<result>中的type属性的结果页面类型,默认的type类型是dispatcher转发,type属性类型:

 <result-types>
  <!--用来处理Action链-->
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<!--用来转向页面,通常处理jsp-->
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<!--处理 FreeMarker 模板-->
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<!--控制特殊http行为的结果类型-->
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<!--重定向到一个URL-->
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<!--重定向到一个 Action-->
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<!--向浏览器发送 InputSream 对象,通常用来处理文件下载,还可用于返回 AJAX 数据。-->
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<!--处理 Velocity 模板-->
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<!--处理 XML/XLST 模板-->
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<!--显示源文件内容,如文件源码-->
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>

所以type属性可以取的值有:chain、dispatcher、freemarker、httpheader、redirect、redirectAction、stream、velocity、xslt、plainText。

最新文章

  1. 隔天开启tomcat spring报错
  2. [LeetCode] Dungeon Game 地牢游戏
  3. Modern Operating Systems(Ⅰ)——2014.12.15
  4. 【概念笔记】JAVA基础 - part2
  5. 创建TabHost的两种方式的简单分析
  6. MFC实现数独(1)
  7. SSD: Single Shot MultiBox Detector
  8. 华硕_ZX50JX4200 安装ssd固态盘
  9. jQuery鼠标悬停图片放大显示
  10. c/cpp中怎样切割字符串,相似于split的功能
  11. 用docker cluster store实现kuryr的共享subnet
  12. js整频滚动展示效果(函数节流鼠标滚轮事件)
  13. java 读取URL中的资源
  14. 转:使用WITH AS提高性能简化嵌套SQL
  15. springboot添加swagger2组件
  16. 【GISer&amp;&amp;Painter】GISer
  17. Ubuntu server 16.04的安装 以及配置(服务器版)
  18. Spark SQL,如何将 DataFrame 转为 json 格式
  19. Codeforces828 A. Restaurant Tables
  20. linux 卸载数据库

热门文章

  1. JS操作数组常用的方法
  2. (转)Java线程:新特征-条件变量
  3. 【echart】学习笔记
  4. java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
  5. 浅谈js分页的几种方法
  6. 蓝桥杯比赛java 练习《立方变自身》
  7. 在同一个sql语句中,统计不同条件的Count数量
  8. ES6学习目录
  9. Docker Registry
  10. jQuery实现拼图小游戏