今天我们来讲讲如何自定义Functionality,自定义Functionality有很多用处。它最大的用处是可以访问数据源。我们来看看已经存在的Functionality:
AGSMapFunctionality, AIMSMapFunctionality, AWSMapFunctionality, EJBMapFunctionality, WMSMapFunctionality等等等等,查看GISFunctionality接口的子类你可以看到ADF中更多的Functionality。
这些Functionality无一不跟后台的资源有关。我们来看看Functionality接口的定义:
public void initFunctionality(GISResource arg0) {}
public void destroyFunctionality() {}
public GISResource getResource() {
return null;
}
每个functionality都需要实现Functionality这个接口,这个接口里面有三个方法,初始化方法,destroy方法和得到资源的方法。GISResource对应于一个特定的资源,比如我们最常用的资源就是AGSLocalMapResource,当然也可以是ArcIMS的Resource,取决于你把这个functionality注册到哪个Resource中。我们来看一个例子,虽然Functionality一般跟资源有关,但是也可以做其它的事情,比如我们这里举一个非常简单的例子,FixedZoomin:
public class DemoFunction implements GISFunctionality {
WebContext ctx;
public void zoomInFunction(){
WebMap wmap = ctx.getWebMap();
WebExtent ext = wmap.getCurrentExtent();
ext.expand(0.5);
wmap.setCurrentExtent(ext);
ctx.refresh();
}
public void initFunctionality(GISResource arg0) {
ctx=arg0.getWebContext();
System.out.print("Demo Function inited");
}
public void destroyFunctionality() {
System.out.print("Demo Function destroyed");
}
public GISResource getResource() {
return null;
}
}
非常简单的一个例子,从GISResource里面得到WebContext,然后得到WebMap,修改WebMap的Extent,放大功能就实现了。你说非得跟资源有关系,那么确实也有点关系,因为我们还是使用了后台的数据来进行操作。需要说明的是,我们这个代码对于所有的Resource都是适用的,不管你后台使用了ArcIMS,还是其它的Resource。ADF的妙处也在这里。
写好了这个Funcionality,那么我们来看看如何部署的,每一个Functionality都需要部署到某个Resource中,那么我来看一下,这个functionality如何来部署:
<managed-bean>
<managed-bean-name>ags1</managed-bean-name>
<managed-bean-class>com.esri.adf.web.ags.data.AGSLocalMapResource</managed-bean-class>
<managed-bean-scope>none</managed-bean-scope>
<managed-property>
<property-name>functionalities</property-name>
<map-entries>
<!--……略去其它的functionality->
<map-entry>
<key>demoFunction</key>
<value>#{demoFunction}</value>
</map-entry>
</map-entries>
</managed-property>
</managed-bean>
部署完成了,如何使用呢?随便在你的一个tools里面,或者task的运行代码里面,添加下面的代码:
GISResource rec=(GISResource)evt.getWebContext().getResources().get("ags1");
DemoFunction df=(DemoFunction)rec.getFunctionality("demoFunction");
df.zoomInFunction();
就可以了。这只是一个简单的例子,而且是绕了一个远的例子。大家可以发掘一下Functionlity的使用方法。在下一次讲座中,我们将详细解释一个对Resource进行操作的例子。
- 大小: 47.5 KB
分享到:
相关推荐
15、ArcGIS Server JAVA 讲座 自定义Functionality 35 16、ArcGIS Server Java讲座---用自定义functionality实现用户权限控制 37 17、Server Java讲座-----扩展Tasks框架 42 18、ArcGIS Server Java讲座--自定义...
【ArcGIS Server Java 讲座】是一系列关于使用Java技术进行ArcGIS Server开发的专业文档,主要探讨了在ArcGIS Server中使用Java Server Faces (JSF)框架的原因和实践。以下是讲座涉及的一些关键知识点: 1. **为...
JSP(JavaServer Pages)是创建动态 Web 内容的 Java 技术。文档提供了关于如何在 ArcGIS Server 应用中编写和集成 JSP 页面的指南。 10. **编写自定义任务 (9.Writing a Custom Task)** 自定义任务允许开发者...
Qt源码编译./configure -prefix $PWD/qtbase -opensource 报错 ERROR: The OpenGL functionality tests failed ubuntu 14.04 LTS qt-everywhere-opensource-src-5.9.9
- **JSF(JavaServer Faces)**:作为ADF的核心技术之一,JSF提供了丰富的UI组件库,简化了Web应用的开发过程。ADF选择了JSF作为其主要的用户界面框架,利用其MVC架构模式,实现了业务逻辑与用户界面的分离,提高了...
在本系列讲座中,我们将探讨如何使用 JSF(JavaServer Faces)技术来开发 ArcGIS Server 应用程序。首先,我们需要解释为什么选择了 JSF 而不是其他框架。 **1.1 为什么选择 JSF:** - **成熟度与稳定性:**JSF 是...
- **ADF选择JSF的原因**:ADF(Application Development Framework)之所以选择JSF(JavaServer Faces)作为其前端技术栈的一部分,主要是因为JSF提供了一套强大的用户界面组件库以及一套易于使用的模型视图控制器...
### ARCGIS SERVER9.2_JAVA开发 #### 概述 《ARCGIS SERVER9.2_JAVA开发》是一本专注于使用Java语言与ArcGIS Server 9.2结合进行地理信息系统开发的专业书籍。该书由许春杰撰写,旨在为开发者提供一套全面的技术...
### ArcGIS Server 9.2帮助文档翻译(7)Adding Custom Functionality #### 知识点解析 **一、Multi-Resource Web ADF 架构** - **资源(Resource)与功能(Functionality)**:从编码的角度来看,资源(Resource)是指`...
1. Limited functionality:Java 文件扫描程序只能统计文件中的行数、注释行数和空白行数,无法进行更加复杂的代码分析。 2. Limited scalability:Java 文件扫描程序可能无法处理非常大的项目,需要优化和改进以...
首先,教程中提到ADF选择了JSF(JavaServer Faces)作为其基础框架。JSF是一种用于构建Java Web应用程序的标准框架,提供了丰富的用户界面组件,使得开发者能够方便地构建和维护复杂用户界面。ADF采用JSF作为其基础...
8. **自定义Functionality和用户权限控制**:介绍了如何通过自定义功能实现用户权限控制,确保应用的安全性。 9. **网络分析**:展示了如何在ArcGIS Server Java中进行网络分析,例如航线查询,这对于物流、交通...
How to create an Android app, as the core libraries in the Android operating system provide Java functionality. Table of Contents Chapter 1. Getting started Chapter 2. Performing operations Chapter 3....
Linux环境下编译搭建GTK环境 在Linux环境下编译搭建GTK环境是开发GTK应用程序的基本步骤。GTK(GIMP Tool Kit)是GNOME桌面环境的基础组件,它提供了一个图形用户界面(GUI)开发框架,允许开发者创建功能强大且...
Chapter 2: Developing Web Applications using JavaServer Faces 2.2 Chapter 3: JSF Component Libraries Chapter 4: Interacting with Databases through the Java Persistence API Chapter 5: Implementing the ...
At this time smali2java provides this functionality with some restrictions. For example, following declaration will be processed without an error message: .field public public public a:I
New functionality New interfaces New methods, properties, and delegates Obsoleted interfaces, methods, properties, and delegates New functionality Major enhancements are: Create constraint-...
AIS31完整文档.doc AIS31 随机数标准是德国联邦信息安全局(BSI)发布的一份关于真随机数生成器(True Random Number Generator,TRNG)的评估标准。本文档对TRNG的评估标准进行了详细的描述,包括功能分级、评估...