ArcGIS Server Java 开发实战---自定义command
这个文档大家如果喜欢看英文,在ESRI的帮助里面就有。本文和ESRI的帮助文档类似,当然,我写的会加入自己的一些东西。咱开发人员拿到一个开发平台,当然是要用来开发的,而且我们最好把它改得面目全非,才能显出开发人员我的水平所在。对于那些拿着模版生...
- 作者:flyingis来源:http://www.blogjava.net/flyingis/|2009年12月21日
这个文档大家如果喜欢看英文,在ESRI的帮助里面就有。本文和ESRI的帮助文档类似,当然,我写的会加入自己的一些东西。
咱开发人员拿到一个开发平台,当然是要用来开发的,而且我们最好把它改得面目全非,才能显出开发人员我的水平所在。对于那些拿着模版生成一个web gis站点就去问客户要钱的事情,对于一个有自尊的开发人员,一般是不屑做的。
所以,我们今天就讲讲如何自定义命令和工具,先说说自定义命令吧。
命令事实上是command,也就是平常所在html页面里面的command,这些command里面就是命令按钮。在我们的ARCGIS Server的Web ADF里面,command被用来做一些不用跟地图交互的工作;比如缩放到全图:你不需要跟地图做任何交互,只要一按按钮,地图就缩放到全图。其它用处,就靠大家去发挥想象了,相信大家在以后的项目中会经常用到。我们以一个例子作为说明:
这是无比简单的一个command,简单到我都不好意思发出来给大家看了。注意这个类没有实现任何接口,也没有扩展任何现有的类,除了祖宗Object。它有一个WebContext,从上面一个讲座我们可以知道,这个类可是我们整个Web ADF的关键,有了它,可以得到所有的东西了。
这个类关键的方法是setFullExtent,里面的几行代码用来将地图缩放到全图,大家看看代码应该就可以明白。
怎么进行部署呢?就像普通的managed bean一样进行部署就可以了,打开jsf application的心脏faces-config.xml文件,在里面添加如下配置:
注意我们把web context作为一个属性,用来初始化MyFullExtent,#{mapContext}指向了一个在faces-config.xml文件中定义的另外一个Bean,这个bean我们上次讲座已经详细解释过了。这里说一句废话,算是提醒一下,有请求过来的时候,先实例化这个类,然后再设置属性,有的工程师想在实例化里面进行一些操作,就必要用webContext,会报告空指针错误,因为这个时候webContext属性还没有被设置。
类写好了,也配置好了,怎么用呢,再给个例子:
自定义command就这样完成了。
咱开发人员拿到一个开发平台,当然是要用来开发的,而且我们最好把它改得面目全非,才能显出开发人员我的水平所在。对于那些拿着模版生成一个web gis站点就去问客户要钱的事情,对于一个有自尊的开发人员,一般是不屑做的。
所以,我们今天就讲讲如何自定义命令和工具,先说说自定义命令吧。
命令事实上是command,也就是平常所在html页面里面的command,这些command里面就是命令按钮。在我们的ARCGIS Server的Web ADF里面,command被用来做一些不用跟地图交互的工作;比如缩放到全图:你不需要跟地图做任何交互,只要一按按钮,地图就缩放到全图。其它用处,就靠大家去发挥想象了,相信大家在以后的项目中会经常用到。我们以一个例子作为说明:
- package com.demo;
- import javax.faces.event.ActionEvent;
- import com.esri.adf.web.data.WebContext;
- import com.esri.adf.web.data.geometry.WebExtent;
- import com.esri.adf.web.faces.event.MapEvent;
- import com.esri.adf.web.faces.event.MapToolAction;
- public class MyFullExtent {
- WebContext context;
- public WebContext getContext() {
- return context;
- }
- public void setContext(WebContext context) {
- this.context = context;
- }
-
- public void setFullExtent(){
- try{
- WebExtent ex=context.getWebMap().getFullExtent();
- context.getWebMap().setCurrentExtent(ex);
- context.refresh();
- }catch(Exception ex){
- ex.printStackTrace();
- }
- }
- }
这是无比简单的一个command,简单到我都不好意思发出来给大家看了。注意这个类没有实现任何接口,也没有扩展任何现有的类,除了祖宗Object。它有一个WebContext,从上面一个讲座我们可以知道,这个类可是我们整个Web ADF的关键,有了它,可以得到所有的东西了。
这个类关键的方法是setFullExtent,里面的几行代码用来将地图缩放到全图,大家看看代码应该就可以明白。
怎么进行部署呢?就像普通的managed bean一样进行部署就可以了,打开jsf application的心脏faces-config.xml文件,在里面添加如下配置:
- <managed-bean>
- <managed-bean-name>myFullExtent</managed-bean-name>
- <managed-bean-class>com.demo. MyFullExtent </managed-bean-class>
- <managed-bean-scope>session</managed-bean-scope>
- <managed-property>
- <property-name>context</property-name>
- <value>#{mapContext}</value>
- </managed-property>
- </managed-bean>
注意我们把web context作为一个属性,用来初始化MyFullExtent,#{mapContext}指向了一个在faces-config.xml文件中定义的另外一个Bean,这个bean我们上次讲座已经详细解释过了。这里说一句废话,算是提醒一下,有请求过来的时候,先实例化这个类,然后再设置属性,有的工程师想在实例化里面进行一些操作,就必要用webContext,会报告空指针错误,因为这个时候webContext属性还没有被设置。
类写好了,也配置好了,怎么用呢,再给个例子:
- <a:command id="fullExtent" action="#{myFullExtent. setFullExtent }" toolText="全图显示" />
自定义command就这样完成了。
+ hot
热门推荐