<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Kimi's NutShell

    我荒廢的今日,正是昨日殞身之人祈求的明日

    BlogJava 新隨筆 管理
      141 Posts :: 0 Stories :: 75 Comments :: 0 Trackbacks

    ADF是(Application Development Framework)的簡(jiǎn)稱(chēng),它的前身是BC4J。 光聽(tīng)這個(gè)名字就知道它是一個(gè)end-to-end的框架。和Spring一樣它在企業(yè)應(yīng)用架構(gòu)的每一個(gè)層次都提供了它的支持。ADF的架構(gòu)如下圖所示:

    在每一層ADF都有它的一些組件。我這次主要想講講ADF的data binding,因?yàn)樗綦x了業(yè)務(wù)邏輯層和web層,使得兩個(gè)層次的獨(dú)立性更強(qiáng)。但是,ADF似乎做得過(guò)于復(fù)雜,使得很難上手使用。
    ADF中關(guān)鍵的數(shù)據(jù)綁定概念如下:

    Data Control:
    Data Control是對(duì)業(yè)務(wù)接口的抽象,也就是說(shuō)所有訪問(wèn)業(yè)務(wù)對(duì)象的方法現(xiàn)在都通過(guò)Data Control來(lái)進(jìn)行,這樣使得綁定層使用一種方式來(lái)訪問(wèn)數(shù)據(jù),不論后臺(tái)的數(shù)據(jù)對(duì)象是種實(shí)現(xiàn)。可以把Data Control看做是一種代理機(jī)制。

    Iterator Bindings and Control Bindings:
    Binding是一種輕量級(jí)的對(duì)象,它的主要目的就是讓后臺(tái)數(shù)據(jù)和前臺(tái)顯示解藕,這是老生常談的問(wèn)題,讓我們看看ADF是怎么做的。Iterator Binding 和提供集合對(duì)象數(shù)據(jù)的Data Control合作。 Control Bindings 則提供了一個(gè)標(biāo)準(zhǔn)的接口讓用戶界面可處理集合對(duì)象或者調(diào)用業(yè)務(wù)方法。

    Binding Containers:
    Binding Container 對(duì)象記錄了某一個(gè)用戶界面使用了哪些iterator binding、control binding。 有一個(gè)XML文件記錄了這些內(nèi)容,在運(yùn)行時(shí)就會(huì)根據(jù)這個(gè)XML來(lái)生產(chǎn)一個(gè)Binding Container。

    Binding Context:
    Binding Context 則是比Binding Container更大的一個(gè)概念,它包含了所有的Binding Container以及Data Control的信息。
    下面介紹一個(gè)簡(jiǎn)單的應(yīng)用藍(lán)圖:

    這個(gè)應(yīng)用是這樣的, 現(xiàn)在有一個(gè)論壇,在這個(gè)論壇上有一個(gè)頁(yè)面用來(lái)Review 一些Threads并指定一個(gè)team回復(fù)它,這個(gè)頁(yè)面叫做ReviewThreads.jsp 。 這個(gè)頁(yè)面需要從后臺(tái)的ForumService來(lái)獲得數(shù)據(jù)并指定回復(fù)的Team. ForumService是一個(gè)ADF的Application Module組件(Application module組件是對(duì)業(yè)務(wù)邏輯的一種抽象,它可以實(shí)現(xiàn)為java class,EJB,webservice等等,它也有自己的方法來(lái)調(diào)用View Object,這里大家只需要認(rèn)為它是一種業(yè)務(wù)組件就行了)。另外,這個(gè)頁(yè)面還需要一個(gè)所有可選Team的下拉框,這個(gè)下來(lái)框的數(shù)據(jù)來(lái)自一個(gè)web service LookupCodes。
    對(duì)應(yīng)每一個(gè)業(yè)務(wù)組件會(huì)有一個(gè)Data Control包裝了該組件的業(yè)務(wù)方法。在該應(yīng)用的Binding Context中包含了兩個(gè)Binding Container, ReviewThreads和UnansweredPostings。前者提供給ReviewThreads.jsp使用,后者則同事支持uix頁(yè)面(uix是一種基于XML的界面語(yǔ)言),以及Jclient的一個(gè)Swing Panel。
    ReviewThreads綁定容器包含了以下Binding:
    1. 三個(gè)指向該應(yīng)用使用的數(shù)據(jù)集合的iterator binding。兩個(gè)由ForumService提供,一個(gè)由LookupCodes提供,如圖所示
    2. 三個(gè)支持了界面上元素的Control Binding
    首先是一個(gè)Attribute control binding 用來(lái)在頁(yè)面上Name輸入框中顯示Forum名字
    其次是一個(gè)list binding來(lái)支持下拉框
    最后是一個(gè)range binding用來(lái)支持JSTL的
    顯示Team對(duì)象。
    3. 一個(gè)control binding用來(lái)調(diào)用ForumService的一個(gè)方法,用來(lái)指定Team答復(fù)Thread.

    需要注意的是,control value bindings 是需要通過(guò)iterator binding來(lái)獲得他們的數(shù)據(jù)。特別是list value binding它同時(shí)需要使用兩個(gè)iterator binding,一個(gè)用來(lái)取得所有的list中的值,另一個(gè)用來(lái)提供list中選擇的值。

    下圖介紹了上述的組件在運(yùn)行時(shí)是怎么樣配合的。一個(gè)Binding Context包含了一個(gè)或者多個(gè)Data Control和Binding Container。每一個(gè)Binding Container會(huì)有一個(gè)或者多個(gè)iterator binding 指定了一個(gè)頁(yè)面使用的數(shù)據(jù)集合。每一個(gè)iterator binding從一個(gè)特定的Data control獲取及更改數(shù)據(jù)。Binding Container也會(huì)有一個(gè)或多個(gè)control binding 來(lái)支持頁(yè)面控制。當(dāng)Control binding需要和數(shù)據(jù)綁定時(shí),就要一個(gè)iterator binding相關(guān)聯(lián)。如果是一個(gè)control action binding,比如說(shuō)和頁(yè)面上的submit健關(guān)聯(lián)的binding則會(huì)要和一個(gè)data control 關(guān)聯(lián)用來(lái)調(diào)用service 層的方法。


    posted on 2006-06-22 09:35 Kimi 閱讀(232) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java
    主站蜘蛛池模板: 亚洲综合中文字幕无线码| 免费观看四虎精品成人| 亚洲卡一卡二卡乱码新区| 亚洲人成色77777在线观看大| 手机看片久久国产免费| 久久久久国色AV免费看图片| 久久免费高清视频| 激情吃奶吻胸免费视频xxxx| 污视频网站在线观看免费| 日韩中文无码有码免费视频 | 亚洲毛片在线免费观看| 亚洲国产成人精品无码区在线秒播| 亚洲第一永久在线观看| 在线91精品亚洲网站精品成人| 日韩免费视频在线观看| 性生大片视频免费观看一级| 成人黄18免费视频| 亚洲AV中文无码乱人伦下载| 亚洲欧洲日产专区| 亚洲av极品无码专区在线观看| 九九九国产精品成人免费视频| 久久久久久av无码免费看大片| 国产99久久久国产精免费| 99热在线日韩精品免费| 9久9久女女免费精品视频在线观看| 免费A级毛片无码A∨免费| 国产成人无码区免费网站| 成人免费视频国产| 毛片免费在线观看网址| 国产V亚洲V天堂无码久久久| 亚洲国产av一区二区三区丶| 中文字幕免费人成乱码中国| 免费看美女被靠到爽| 国产精品免费视频观看拍拍 | 中文字幕版免费电影网站| 免费在线中文日本| 国产成人免费ā片在线观看| 亚洲成AV人片一区二区| 精品成人一区二区三区免费视频| 久久最新免费视频| 亚洲精品无码久久久久去q|