Struts2支持使用多种视图技术,例如JSP、Velocity和FreeMarker等。当一个Action处理用户请求结束后,仅仅返回一个字符串,这个字符串就是逻辑视图名,但改逻辑视图并未与任何的视图技术及任何的资源关联--直到我们在struts.xml文件中配置改逻辑视图。
结果类型决定了Action处理结束后,下一步将执行那种类型的动作。
Struts2的结果类型要求实现com.opensymphony.xwork.Result,这个结果是所有Action执行结果的通用接口。如果我们需要自己的结果类型,我们应该提供一个实现改接口的类,并在struts.xml文件中配置改结果类型。
Struts2默认提供了一系列的结果类型,下面是struts-default.xml配置文件的配置片段:
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 <!-- 用于 FreeMarket 整合的结果类型 --> 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 <!-- 用于向浏览器返回一个InputStream的结果类型 --> 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 <!-- 用于整合 XML/XSLT 的结果类型 --> 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>
在struts2-jasperreports-plugin-2.0.6.jar的struts-plugin.xml文件中的配置片段:
<result-types> <!-- 用于整合 JasperReport 的结果类型 --> <result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"/> </result-types>
在struts-jfreechart-plugin-2.0.6.jar的struts-plugin.xml文件中的配置片段:
<result-types> <!-- 用于整合 JSF 的结果类型 --> <result-type name="jsf" class="org.apache.struts2.jsf.FacesResult"/> </result-types>
<result-types> <!-- 用于整合 Tiles 的结果类型 --> <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/> </result-types>