5.7 自定义Result
5.7.1 什么是自定义Result
所谓自定义Result,就是由我们自行开发的Result,而不是使用由Struts2预先定义好的Result。
在实际开发中,需要自定义Result的机率并不大,因为常见的各种页面展示技术,Struts2都已经预定义好相应的Result了,无需我们自行开发。如果我们要自定义Result,要么就是包装一种新的页面展示技术,要不干脆就是我们自行开发的页面展示技术,出现这些情况的可能性很低。
虽然用得不多,但是从知识的完整性上,还是需要了解如何自定义Result的,再说,了解自定义Result,也能加深对Result技术的理解。
5.7.2 开发自定义Result
其实,开发自定义Result是非常简单的,只需要实现com.opensymphony.xwork2.Result接口就可以了,这个接口的定义也非常简单,示例如下:
java代码:
- public interface Result extends Serializable {
- public void execute(ActionInvocation invocation) throws Exception;
- }
就是一个execute方法,在这个方法里面去写Result的真正处理,就是如何展示视图。当然,所有需要的数据都可以从ActionInvocation里面获取到。
好了,下面来写个示例示范一下,如何开发自定义的Result。为了简单,就采用字符界面来展示视图,简单点说,就是把信息在后台输出一下。
1:写MyResult类
示例如下:
java代码:
- package cn.javass.action.action;
-
- import com.opensymphony.xwork2.ActionInvocation;
- import com.opensymphony.xwork2.Result;
-
- public class MyResult implements Result{
- public void execute(ActionInvocation invocation) throws Exception {
- System.out.println("要处理的Result字符串是="+invocation.getResultCode());
- }
- }
只是简单的输出了Action返回的要处理的Result的字符串的值,至于要想获取更多要展示的值,可以通过ActionInvocation去获取ActionContext,在ActionContext里面封装着所有需要的值。由于ActionContext在后面才会详细学到,这里就先不去示例了。
2:在struts.xml中配置使用MyResult
示例如下:
java代码:
- <package name="helloworld" extends="struts-default">
- <result-types>
- <result-type name="MyResult" class="cn.javass.action.action.MyResult" default="false"/>
- </result-types>
-
- <action name="helloworldAction" class="cn.javass.action.action.HelloWorldAction">
- <result name="toWelcome" type="MyResult">/s2impl/welcome.jsp</result>
- </action>
- </package>
这里面有两个地方要注意:
- 在<action>当前的<package>里面配置了自定义的<result-type>,当然它的配置也很简单,主要就是name和class属性,还有一个default的属性用来表示这个ResultType是否缺省使用的。
- 另外一个地方,在<action>里面配置<result>的时候,要配置type属性,type属性的值就是我们自定义的<result-type>的name属性的值
3:测试一下
其它的没有什么变化,照例从登录页面开始运行,去测试一下,看看效果。后台应该有如下输出信息:
java代码:
- 用户输入的参数为===account=test,password=test,submitFlag=login
- 要处理的Result字符串是=toWelcome
其中加粗的这句话就是由我们自定义的Result输出的。
注意:由于此时我们的Result并没有向页面输出任何东西,因此,此时的页面应该是一片空白。
通过这个示例可以看到,自定义Result也不是一件很困难的事情,困难的是到底如何展示数据,也就是必须有一个相应的视图展示技术,Result就相当于是包装这个视图展示技术的。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4056.html】
欢迎访问http://sishuok.com获取更多内容
分享到:
相关推荐
研磨Struts2
《研磨Struts2》原书配套源代码,配合Struts2原书使用,快速学习Struts2技术。
由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。
研磨struts2博文,详细讲解了struts2运行流程,值得大家阅读
《研磨Struts2》原书配套PPT,结合《研磨Struts2》配套使用,快速学习Struts2框架。
研磨struts2_系列文章.pdf
研磨Struts2 高清完整版,请和第一部分一起下载啊
《研磨Struts 2》PDF版本下载
研磨Struts2_12859679_高清完整版
研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人
研磨struts,仅是简版,我也是从网上下来的。大家凑合看吧。
第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章 抽象工厂模式(Abstract Factory) 第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11...
第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章 抽象工厂模式(Abstract Factory) 第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11...
Java工程师三大框架面试题.pdf
第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章 抽象工厂模式(Abstract Factory) 第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11...
第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章 抽象工厂模式(Abstract Factory) 第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) ...