欢迎来到天天文库
浏览记录
ID:23144828
大小:1.12 MB
页数:21页
时间:2018-11-04
《struts2.0第05章result》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第五章Result在探讨Result之前,要向大家解释清楚很容易弄糊涂的两个概念:返回字符串和返回类型。在前面Action章节,提到返回的字符串有五种,但那不是现在要讨论的Result类型,那只是Xwork.xml配置文件中result标签name属性的值。如下所示:/welcome.jspresult标签还有一个type属性,但之前并没有显式使用过该属性,即一直使用该标签的默认值Dispatcher。在本章中将介绍Result的几种通用类型,如Dispatcher、Redirect、Chain以及
2、一些其他模块的几种返回类型,将介绍Velocity、FreeMark、JasperReport三种模块的返回类型。在介绍他们之前,先带领读者看看如何自定义Result,这样会有助于理解Result的实质,为以后的学习打下基础。5.1自定义的Result在实现自定义的Result之前,先看看Struts2.0.9中关于Result的源代码。Result是一个接口,在xwork-2.0.4.jar中包含了这个类。xwork-2.0.4.jar的源代码Struts2.0.9中并没有包括,所以要去opensymphony网站下载xwork-2.0.4-src.zip包
3、,解压之后,这个类的源代码文件的路径就是xwork-2.0.4-srcxwork-2.0.4srcjavacomopensymphonyxwork2Result.java。packagecom.opensymphony.xwork2;importjava.io.Serializable;publicinterfaceResultextendsSerializable{publicvoidexecute(ActionInvocationinvocation)throwsException;}可以看到,在Result的接口中只定义一个execute
4、()方法,如果读者想实现自己的Result就必须实现该接口。接下来通过一个例子来看看如何自己创建一个简单的Result类型。我们给这个Result的类型取名为“test”,通过这个Result类型来告诉Action返回的是何种返回字符串,我们使用一个随机数来选择返回的五个类型中的一种。注意:Result接口中的execute()方法没有返回类型,因为Result就是执行最后的任务,没有必要再返回其他数据了。而Action接口中的execute()方法返回的是String类型。5.1.1实现自定义的Result前面已经说过要自定义Result类型,就必须实现Re
5、sult接口,由于例子比较简单,只需要在execute()方法中添加几行代码。下面是一个完整的ResultType.java文件,它主要功能就是显示Action返回的类型。ResultType.javapackageexample.result;importcom.opensymphony.xwork2.ActionInvocation;importcom.opensymphony.xwork2.Result;@SuppressWarnings("serial")21publicclassResultTypeimplementsResult{publicvoi
6、dexecute(ActionInvocationinvocation)throwsException{StringresultCode=invocation.getResultCode();System.out.println("ThistimeofResultcode:"+resultCode);}}这个自定义的Result文件是在src的目录下创建的。看上面的代码很简单吧!在这个类里面只实现了一个Result接口中的execute()方法。如果有些函数读者不理解,可以去查看相关文档。在这里用到的是ActionInvocation这个类,然后调用里面的g
7、etResultCode()方法,这个函数返回的是在Action中执行之后所返回的代码,即前面提到的五种返回字符串类型之一,接下来是一句简单的输出语句。当然这只是一个最简单的自定义Result类型,它不能显示一个视图,后面读者将会看到Struts2集成的Result类型,它们的功能将会十分强大,在下一节读者将会体会到。其实,Struts2提供的Result类型已经够平时使用了,如果没有特殊的要求,没有必要使用自定义Result类型。知道Result的定义后,下面来看看Action的具体代码。完整的代码如下所示:TestAction.Javapackageexa
8、mple.result;importj
此文档下载收益归作者所有