日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Server JAVA 講座:自定義Functionality

系統(tǒng) 2749 0
今天我們來講講如何自定義Functionality,自定義Functionality有很多用處。它最大的用處是可以訪問數(shù)據(jù)源。我們來看看已經(jīng)存在的Functionality:
AGSMapFunctionality, AIMSMapFunctionality, AWSMapFunctionality, EJBMapFunctionality, WMSMapFunctionality等等等等,查看GISFunctionality接口的子類你可以看到ADF中更多的Functionality。
這些Functionality無一不跟后臺的資源有關(guān)。我們來看看Functionality接口的定義:
    
public void initFunctionality(GISResource arg0) {}
public void destroyFunctionality() {}
public GISResource getResource() {
    return null;
}

  

每個functionality都需要實現(xiàn)Functionality這個接口,這個接口里面有三個方法,初始化方法,destroy方法和得到資源的方法。GISResource對應(yīng)于一個特定的資源,比如我們最常用的資源就是AGSLocalMapResource,當(dāng)然也可以是ArcIMS的Resource,取決于你把這個functionality注冊到哪個Resource中。我們來看一個例子,雖然Functionality一般跟資源有關(guān),但是也可以做其它的事情,比如我們這里舉一個非常簡單的例子,F(xiàn)ixedZoomin:
    
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,放大功能就實現(xiàn)了。你說非得跟資源有關(guān)系,那么確實也有點關(guān)系,因為我們還是使用了后臺的數(shù)據(jù)來進(jìn)行操作。需要說明的是,我們這個代碼對于所有的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();

  

就可以了。這只是一個簡單的例子,而且是繞了一個遠(yuǎn)的例子。大家可以發(fā)掘一下Functionlity的使用方法。在下一次講座中,我們將詳細(xì)解釋一個對Resource進(jìn)行操作的例子。




Server JAVA 講座:自定義Functionality


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 永昌县| 山东省| 营山县| 蒙山县| 丰县| 曲阳县| 南郑县| 桦川县| 全州县| 新安县| 南昌县| 太原市| 中卫市| 肃宁县| 承德县| 新丰县| 扎鲁特旗| 谷城县| 梨树县| 类乌齐县| 拜城县| 横峰县| 乌兰县| 万州区| 阳高县| 宿松县| 华宁县| 搜索| 东乡县| 巴马| 山阴县| 襄城县| 望城县| 潞西市| 壤塘县| 什邡市| 濮阳县| 兰考县| 滁州市| 新乐市| 尼勒克县|