Action处理完用户请求后返回一个字符串,整个字符串就是一个逻辑视图名。
除此之外,struts2还支持多种结果映射,struts2将结果转为实际资源时,不仅可以是JSP视图资源,也可以是FreeMarker视图资源,甚至可以将请求转给下一个Action,形成Action的链式处理。
|--局部 作为<action../>子元素
|--全局 作为<global-results../>子元素
全局结果对所有Action都有效,处理请求时先在局部找,找不到再到全局找
<result../>元素
name 逻辑视图名(默认为success)
type 结果类型(默认为dispatcher)
配置result时如果没有指定location参数,系统会将<result..>...</result>中间的字符串当成实际视图资源
Struts2支持结果类型:
默认:dispatcher
struts-default.xml配置文件里的片段:
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
不算插件所支持的结果类型,struts2内建的支持结果类型有:
chain,dispatcher,freemarker,httpheader,redirect,redirectAction,stream,velocity,xslt.plainText
自定义结果类型需要:
1)提供一个实现com.opensymphony.xwork2.Result的类。
2)在struts.xml文件中配置该结果类型。
动态结果:
在配置result元素时也可以使用表达式语法:
<action name="crud_*" class="" method="{1}">...
<result>WEB-INF/content/{1}.jsp</result>
</action>
Action属性值决定物理视图资源:除了可以使用${0}表达式形式指定视图资源外,还可以使用${属性名.属性名......}(OGNL表达式)形式:
<result type="redirect">edit.action?skillName=${currentSkill.name}</result>
result元素的type属性为dispatcher 时:
<param../>元素的name属性可以是 |--location 指定逻辑视图对应的实际视图资源
|--parse 是否允许使用OGNL表达式,默认为true
plainText主要用于显示实际资源页面的源码,可指定两个参数:
|--location 实际视图资源
|--charset 输出页面事所用字符集
redirect与dispatcher(请求forward转发)结果类型相对,是将请求重定向到指定资源,可指定两个参数:
|--location 跳转地址
|--parse 是否允许使用表达式,默认为true
使用redirect时,不能重定向到WEB-INF下的资源
redirectAction使用ActionMapperFactory提供的ActionMapper来重定向请求,通常用于生成对另一个Action的请求。可以指定两个参数:
|--actionName 指定重定向的action名
|--namespace 指定重定向的action所在命名空间