你的位置:首页 > Java教程

[Java教程]Struts2学习笔记(四)——result结果类型


当Action类的方法处理请求后,会返回一个字符串(逻辑视图名),框架根据这个结果码选择对应的result,向用户输出,所以需要在struts.

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

1)局部结果页面

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

2)全局结果页面

1 <global-results>2   <!-- 全局结果 当前包中 所有Action都可以用-->3   <result name="success">/result.jsp</result>4 </global-results>

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

2、结果页面跳转类型

在struts-default.

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

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