黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Server JAVA 講座:自定義Functionality

系統 2884 0
今天我們來講講如何自定義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進行操作的例子。




Server JAVA 講座:自定義Functionality


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論