这一章我们主要研究一下Task同志的成份和出身。ADF中本身包含一些现成的Task,不过相比对开发人员来说没有很大的意义,这一章我们的重点还是在如何自定义Task。
Task是实现业务逻辑的重要部分。简单来说,Task可以让输入一些参数(在页面上以文本框、组合框等形式出现)、通过Command和Tool的组合,帮助你完成特定的“任务”并返回结果,这就是所谓的Task。
一 Task的请求
虽说这一节的标题是Task的请求,但在这里我们对ADF的Task怎么向服务器做请求并不作深入的探讨,这里我们主要是去了解一个Task在服务器端执行的时候需要客户端提供的信息有哪些。
如图 12是一个简单的Task请求面板,在这个面板中会有一些Parameter(一般以文本框、组合框等形式出现)和一些Command或Tool(一般以按钮形式出现)。下面我们先来定义一个Task,其中包含一个Parameter、一个Command和一个Tool。
在IDE中新建一个Task最简单的方法就是使用菜单【File】-【New】-【Task】,然后给你的Task起个名字,如图 14。
这个时候,IDE会弹出另外一个对话框供你对这个Task进行一些设置,比如Task的名称、里面包含的Parameter、Command(在这里叫Action)、Tool等。这里就根据你的需要进行填写了,我们先各添加一个,如图 15所示。
这时你会发现,在Java源文件目录下多了2个文件,一个是“QueryTask.java”,另一个是“QueryTaskTaskInfo.java”,同时在faces-config.xml文件中也多了一个名为queryTask的ManagedBean。
打开“QueryTask.java”文件,我们可以找到和刚才定义的那些内容相对应的代码,下面的表简述了这样的一种对应关系:
类型 名称
Parameter String keyWord
Command Void方法 query(TaskEvent event)
Tool Void方法 select(MapEvent event)
在“QueryTask.java”中我们还可以找到QueryTaskTaskInfo对象,关于QueryTaskTaskInfo这个类的定义及其作用我们在后面再详细说。下面让我们先把这个Task添加到页面上去:
这里的taskInfo属性就是这个Task的TaskInfo对象,我们可以先不用管,唯一一个以前没有出现过的属性就是windowingSupport,这个属性定义的是这个Task面板是否可以在页面上浮动并拖拽。让我们运行下这个页面看一下效果:
稍微总结一下,Task中主要包含3个功能元素:Parameter、Command、Tool;Task对应的Java类有2个,其中在实现功能的Task类(比如上面的QueryTask类)中,Parameter对应类中的属性字段、Command对应类中的带TaskEvent 参数的void方法、Tool对应类中的带MapEvent 参数的void方法。这样,前台的Task请求就和后台具体的功能联系起来了。