案例學習BlazeDS+Spring之五InSync03強型別

來源:互聯網
上載者:User

InSync03:強型別

一、運行DEMO:
1、運行程式:http://localhost:8400/spring-flex-testdrive/insync03/index.html;
2、單擊Search按鈕,從資料庫擷取所有的連絡人。
3、在Search文字框輸入幾個字元,單擊“Search”按鈕,按名字來尋找連絡人。

4、在DataGrid中選擇一個連絡人。
5、在連絡人表單中編輯該連絡人,單擊"Save"來儲存修改。

二、理解代碼:
1、insync03.mxml:

選擇DataGrid裡的連絡人後,將會更新ContactForm的contact屬性,ContactForm的控制項值會自動更新。
<local:ContactForm contact="{dg.selectedItem as Contact}" width="70%" height="100%"/>

2、ContactForm.mxml:

該表單上的控制項用於顯示contact的資訊,contact成員變數用於控制項綁定。

[Bindable] public var contact:Contact;
儲存和刪除的按鈕,分別調用RemoteObject的方法,ro.update(contact)和ro.remove(contact);

也捕獲了遠程調用後觸發的事件。

<mx:RemoteObject id="ro" destination="contactService" fault="faultHandler(event)" endpoint="http://localhost:8400/spring-flex-testdrive/messagebroker/amf">
            <mx:method name="update" result="update_resultHandler(event)"/>
            <mx:method name="remove" result="remove_resultHandler(event)"/>
</mx:RemoteObject>

3、Contact.as 
該類是FLASH裡的AS類,Contact類只是定義了一些公用的成員變數。重要的是遠程類的標註。這個類用於與遠端JAVA類進行映射。
[Bindable]
[RemoteClass(alias="org.springframework.flex.samples.contact.Contact")]

4、Contact.java:

該類位於服務端,Contact要實現Serializable,用於與FLASH中的AS類進行序列化/還原序列化。而實現序列化,定義serialVersionUID成員變數即可。
static final long serialVersionUID = 103844514947365244L;

還有各私人屬性的get/set公開方法。

5、更新/刪除操作

在前台的ContactForm裡,ro.update(contact)或ro.remove(contact)後,FLASH裡的contact執行個體會被序列化,然後傳送到服務端,進行還原序列化後,變成可供JAVA應用操作的JAVA執行個體。

contactDAO bean的更新和刪除方法是:
    public boolean update(Contact contact) {
        int count = this.template.update(
            "UPDATE contact SET first_name=?, last_name=?, address=?, city=?, state=?, zip=?, phone=?, email=? WHERE id=?", contact.getFirstName(),
            contact.getLastName(), contact.getAddress(), contact.getCity(), contact.getState(), contact.getZip(), contact.getPhone(),
            contact.getEmail(), contact.getId());
        return count == 1;
    }

    public boolean remove(Contact contact) {
        int count = this.template.update("DELETE FROM contact WHERE id=?", contact.getId());
        return count == 1;
    }

 

三、小結:

在本DEMO中,使用強型別的contact對象。Contact是AS類,它代表org.springframework.flex.samples.contact.Contact Java類。這個映射過程要求AS中定義類時使用標註來定義其對應的遠程類,而遠程類要實現序列化的介面。

如Contact.as中的[RemoteClass(alias="org.springframework.flex.spring.samples.contact.Contact")] 標註用來指出Contact AS執行個體發送到伺服器被反序列為org.springframework.flex.spring.samples.contact.Contact服務端的Java執行個體,同樣的,從伺服器上接收的org.springframework.flex.spring.samples.contact.Contact
Java執行個體將被反序列為Contact AS執行個體。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.