当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。

Struts2学习笔记(四)——result结果类型的更多相关文章

  1. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  2. struts2学习笔记之七:Result类型

    一:关于Struts2的type类型,也就是Result类型,他们都实现了共同的接口Result,都实现了execute方法 他们体现了策略模式,具体Result类型参见:struts-default ...

  3. Struts2学习笔记(三):result配置的各项视图转发类型

    Struts 1: <action path="/user" type="org.sunny.user.action.UserAction" ...> ...

  4. Struts2 学习笔记 10 Result部分 part1

    1.关于Result我们首先来学习一下结果类型 result type. 先来看struts.xml. struts.xml <?xml version="1.0" enco ...

  5. Struts2 学习笔记 11 Result part2

    之前学习了result type 和global result 我们现在来说一下 1.Dynamic Result动态结果集.先来看一下小项目的目录 首页的两个链接访问user/user?type=1 ...

  6. Struts2学习笔记四 OGNL

    OGNL,全称为Object-Graph Navigation Language(对象图表达语言),它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,调用java对象的方法,同时能够自动 ...

  7. Struts2学习笔记四:深入拦截器

    一:拦截器的工作原理 拦截器的执行过程可以类比filter过滤器,ActionInvocation实例执行过程中,先执行action实例上引用的拦截器们,然后才执行action实例处理请求,返回res ...

  8. struts2学习笔记四

    一.contextMap中的数据操作 root根:List 元素1 元素2 元素3 元素4 元素5 contextMap:Map key value application Map key value ...

  9. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

随机推荐

  1. hihocoder 1050 树中的最长路(动态规划,dfs搜索)

    hihocoder 1050 树中的最长路(动态规划,dfs搜索) Description 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅 ...

  2. ajax异步上传文件之data参数----小哈学js

    下载ajaxFileUpload.js(下载网址:http://fileuploadajax.codeplex.com/downloads/get/20976) 修改ajaxFileUpload.js ...

  3. linux和Windows实现文件共享之samba的安装与配置

    背景: 项目需求linux的一个目录,需要在两台windows目录上面进行同时共享. 使用mount时发现,通过mount将同一个linux上面的目录挂载在两台windows机器上时,会出现文件隐藏的 ...

  4. SQL注入的各种类型的检测方式

    #SQL注入各个类型检测方式 http://127.0.0.1/day6/1.php?id=1 union select 1,name,pass from admin 数字型 数字型不用特意加字符,直 ...

  5. ES6对象扩展

    前面的话 随着JS应用复杂度的不断增加,开发者在程序中使用对象的数量也在持续增长,因此对象使用效率的提升就变得至关重要.ES6通过多种方式来加强对象的使用,通过简单的语法扩展,提供更多操作对象及与对象 ...

  6. (转)MyBatis在插入的数据有空值时,可能为空的字段都要设置jdbcType

    1 引言 前面的所有语句中你所见到的都是简单参数的例子,实际上参数是 MyBatis 非常强大的元素,对于简单的做法, 90% 的情况参数都很少,比如: <select id="sel ...

  7. iOS 使用 socket 即时通信(非第三方库)

    其实写这个socket一开始我是拒绝的. 因为大家学C 语言和linux基础时肯定都有接触,客户端和服务端的通信也都了解过,加上现在很多开放的第三方库都不需要我们来操作底层的通信. 但是来了!!! 但 ...

  8. JStorm与Storm源码分析(二)--任务分配,assignment

    mk-assignments主要功能就是产生Executor与节点+端口的对应关系,将Executor分配到某个节点的某个端口上,以及进行相应的调度处理.代码注释如下: ;;参数nimbus为nimb ...

  9. windows下配置cygwin和dig的环境变量

    配置cygwin和dig的环境变量 打开"控制面板"("开始">"设置">"控制面板"),然后双击" ...

  10. phantomjs submit click

    phantomjs 一般提交时都会用submit,前提条件就是网页中有form表单: 在网页中无form表单的情况下,用submit()会报错:selenium.common.exceptions.N ...