2012-10-08 98 views
1

將數據(數據序列化)從Java(服務器)傳遞到Flex(客戶端)時,對象的名稱正在更改。請在下面找到詳細信息。Flex Remoting - 在數據序列化期間更改對象名稱

的Java POJO的

public class MSC 
{ 
    public String Column1; 
    public String Column2; 
} 

Java遠程類

public List<MSC> getData() 
{ 
    MSC pojoMSC = new MSC; 
    pojoMSC.Column1 = "1"; 
    pojoMSC.Column2 = "2"; 

    List<MSC> listMSC = new ArrayList<MSC>; 
    listMSC.add(pojoMSC); 
    return listMSC; 
} 

Flex的結果處理

var ReturnData:ArrayColelction = event.result as ArrayCollection; 

當我調試,並注意表達ReturnData我得到以下

ReturnData 
    [0] 
    column1 "1" 
    column2 "2" 

儘管過程都是正確的,並且值也都是正確的,但ReturnData的0索引對象的名稱從Column1更改爲Column1,Column2更改爲Column2。

我認爲這是通過Flex AMF Data Serilization完成的。怎麼可能阻止,以便我可以將Coulmn1作爲Column1等等。如果不是它背後的概念是什麼。

在此先感謝。

回答

2

是的,這是因爲BlazeDS使用Java Bean命名約定。

首先,在Java中,您不會命名以大寫字母開頭的類的成員(字段,方法)。其次,遵循封裝原則並使您的字段保持私密並使用getter/setter來改變它們是一種很好的做法。

在你這情況會是這樣:

public class MSC 
{ 
    private String column1; 
    private String column2; 

    public String getColumn1(){ 
     return column1; 
    } 

    public void setColumn1(String value) { 
     column1 = value; 
    } 

    public String getColumn2(){ 
     return column2; 
    } 

    public void setColumn2(String value) { 
     column2 = value; 
    } 
} 

但總的來說:切勿用大寫字母開頭的變量。

+0

你能幫我「BlazeDS使用Java Bean命名約定」嗎? – SRCM

+0

第一個問題:從大寫字母開始的字段名稱有多重要?由於還存在Flex/ActionScript編碼約定(http://sourceforge.net/adobe/flexsdk/wiki/Coding%20Conventions/),並且不允許命名從大寫字母開始的變量和字段。 –

+0

這不是那麼重要,但必須根據CodingConvention改變它們。感謝您的及時答覆,將參考文件。 – SRCM

相關問題