《研磨struts2》第五章 Result 之 5.2 预定义的Result
5.2??预定义的Result5.2.1??预定义的ResultType
在Struts2中,预定义了很多ResultType,其实就是定义了很多展示结果的技术。Struts2把内置的<result-type>都放在struts-default包中。struts-default包就是我们配置的包的父包,在第4章已经看到这个包定义在struts2-core-2.1.8.1.jar包中的根目录下的文件struts-default.xml中。
在这个包中,可以找到相关的<result-type>的定义,<result-types>元素是<package>元素的直接子元素。Struts2预定义如下:
?
?
图5.1? 使用redirect的欢迎页面
仔细看看,有什么不同?
很明显,这里没有正确的显示出帐号的值来,看看后台有值吗?肯定是有的。这就说明经过“redirect”这个ResultType,跳转到欢迎页面的时候,两个请求对象不是一个了,因此在欢迎页面无法获取到帐号的值了。
你可以把struts.xml中,type=“redirect”的配置去掉,或者改成type=“dispatcher”,再次运行看看,欢迎页面就应该有值了。
2:几个小知识点
?????? 对比着dispatcher的ResultType,来看看相应的几个问题。
(1)同样在<result>元素的定义中可以使用Action的execute方法运行之后的数据。
?????? 测试示例,同样在Action中定义一个folder字符串,并在execute中对它赋值,跟前面一样,这里就不去赘述了。
那么,在<result>的定义中就可以引用folder这个变量,示例如下:
?
图5.2? 使用chain的欢迎页面
仔细观察上面的欢迎页面,会发现能够访问到用户在登录页面填写的帐号数据。再来看看后台,会输出如下信息:
?
package>??5.2.7??其他ResultType
除了前面提到的这些result,Struts2还提供其他的Result,比如用于同Velocity、xslt等的结合,这里简单的介绍一下:
1:velocity:用来处理velocity模板。Velocity是一个模板引擎,可以将Velocity模板转化成数据流的形式,直接通过JavaServlet输出。
2:xslt:用来处理处理XML/XLST模板,将结果转换为xml输出。
3:httpheader:用来控制特殊HTTP行为
4:stream:用来向浏览器进行流式输出
?
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4051.html】
欢迎访问http://sishuok.com获取更多内容