Struts 2中Action的处理结果
在概述中提到Struts 2中的Action返回的结果实一个String,而不是像Struts1中返回ActionForward对象。而且Struts2返回结果既可以使jsp资源也可以是FreeMarker等其他试图资源。
1. 配置结果
Struts 2的Action处理结果也同样在struts.xml文件中配置。使用<result …/>元素来配置结果。根据<result …/>出现的位置不同,有两种不同的结果:
l 局部结果:将<result …/>作为<action …/>元素的子元素配置。
l 全局结果:将<result …/>作为<global-results …/>元素的子元素配置。
例1.1
<action name=”login” class=”abc.LoginAction”>
<result name=”success” type=”dispatcher”>
<param name=”location”>/location.jsp</param>
</result>
</action>
例1.2
...
<global-results>
<result name=”success”>/success.jsp</result>
</global-results>
…
系统默认的result的type是dispatcher,即jsp。所以如果省略type则采用jsp类型视图。如果省略name则默认success。
2. Struts 2支持的处理结果类型
Struts 2内建的处理结果类型在struts-default.xml文件中有描述。除此之外外部的视图插件在其struts-plugin.xml也可以看到相应得配置。所以Struts 2理论上可以支持所有的试图类型。
介绍几个特殊的结果类型:
l plaintext:把结果页面代码直接输出。
l redirect:重定位到指定的结果视图,URL将改变(不在是指向Action)。
l redirect-action:重定向到新的Action