2012-10-08 62 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

相关问题