Struts2提供了对不同种类返回结果的支持,常见的有JSP,FreeMarker,Velocity等。
Struts2支持的不同类型的返回结果为:
名字
|
说明
|
Chain Result
|
用来处理Action链
|
Dispatcher Result
|
用来转向页面,通常处理JSP
|
FreeMarker Result
|
处理FreeMarker模板
|
HttpHeader Result
|
用来控制特殊的Http行为
|
Redirect Result
|
重定向到一个URL
|
Redirect Action Result
|
重定向到一个Action
|
Stream Result
|
向浏览器发送InputSream对象,通常用来处理文件下载
|
Velocity Result
|
处理Velocity模板
|
XLS Result
|
处理XML/XLST模板
|
PlainText Result
|
显示原始文件内容,例如文件源代码
|
S2PLUGINS:Tiles Result
|
结合Tile使用
|
另外第三方的Result类型还包括JasperReports Plugin,专门用来处理JasperReport类型的报表输出。
在struts-default.xml定义的所有Result类型:
<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>
如果不指定
Result类型的时使用dispatcher类型
在package内部定义全局的Result:
<package name="base" extends="struts-default">
<global-results>
<global-results>
<result name="success">/index.jsp</result>
<result name="error">/error.jsp</result>
<result name="login" type="redirect-action">Logon!input</result>
</global-results>
</global-results>
</package>
当你只需要在本包内使用时可以只在本包里定义,但当你要在所有包都能使用,就可以使用上面配置定义,然后要使用的包继承此包。
1、使用redirectAction重定向到同包内的action:
<action name="redirectActiontest">
<result name="success" type="redirect">/register_success.jsp</result>
</action>
<action name="redirectAction">
<result type="redirectAction">redirectActiontest</result>
</action>
当要使用 redirectAction重定向到另一个包的action时,就需要为org.apache.struts2.dispatcher.ServletActionRedirectResult属性注值
<package name="default" namespace="/test" extends="struts-default">
<action name="redirectAction">
<result type="redirectAction">
<!-- 重定向到另一個包的action -->
<param name="actionName">xxx</param>
<param name="namespace">/other/dfsdfsdf</param>
</result>
</action>
</package>
<package name="other" namespace="/other" extends="struts-default">
<action name="xxx">
<result name="success">/register_success.jsp</result>
</action>
</package>
组合成的路径就为:/other/dfsdfsdf/xxx,也是可以访问的
2、使用plainText显示视图源代码:
<action name="plainText">
<result type="plainText">/showdate.jsp</result>
</action>
当需要设置编码时,需使用用到下面配置:
<action name="plainText">
<result type="plainText">
<param name="location">/showdate.jsp</param>
<param name="charSet">UTF-8</param>
</result>
</action>