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获取更多内容
分享到:
相关推荐
2. **拦截器(Interceptors)**:Struts2的核心之一是其拦截器机制,它们在Action执行前后执行一系列预定义或自定义的操作。这些拦截器可以用于登录验证、日志记录、性能监控等。源代码中可能包含了不同类型的拦截器...
### 知识点一:Struts2入门(MVC HelloWorld) #### 1.1 Struts2简介 ...以上就是关于“研磨Struts2”的主要知识点梳理,通过深入学习这些内容,开发者可以更好地掌握Struts2框架的核心技术和实践技巧。
Result是Struts2中负责返回结果的对象,第五章详细介绍了Result的各种类型和用法。预定义的Result类型如dispatcher、redirect、chain等,以及如何自定义Result,都是本章的重点。此外,Struts2的异常映射、...
由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。
《研磨Struts2》这本书是专门针对Struts2框架的学习指南,通过深入浅出的方式讲解了Struts2的核心概念和技术。其配套的PPT和视频旨在帮助读者更直观地理解书中的理论知识,并将其付诸实践。 在研读《研磨Struts2》...
Struts2提供了多种预定义的Result类型,同时支持自定义Result类型的扩展。 ### 拦截器(Interceptor) 拦截器是Struts2的一个核心特性,用于在Action执行前后进行一系列操作,如权限检查、数据校验、事务管理等。...
根据提供的文件信息,我们可以推断出这是一份关于《研磨Struts 2》书籍PDF版本的下载资源。为了更好地理解和概括这份资料所涉及的知识点,我们先来了解一下Struts 2框架及其重要性,然后深入探讨《研磨Struts 2》这...
5. **Struts2架构**:Struts2的系统架构包含ActionServlet、FilterDispatcher、ActionInvocation等核心组件。ActionServlet是入口点,FilterDispatcher处理过滤请求,ActionInvocation负责执行Action。 6. **运行...
研磨Struts2 高清完整版,请和第一部分一起下载啊
研磨Struts2_12859679_高清完整版
研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人
第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) ...