1

在将数据(数据序列化)从 Java(服务器)传递到 Flex(客户端)时,对象的名称正在发生变化。请在下面找到详细信息。

爪哇波乔

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 数据序列化完成的。如何防止它,以便我可以将 Coulmn1 作为 Column1 等。如果不是,它背后的概念是什么。

提前致谢。

4

1 回答 1

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;
   } 
}

但总的来说:不要以大写字母开头变量。

于 2012-10-08T10:42:30.917 回答