1

Java(サーバー)からFlex(クライアント)にデータ(データシリアル化)を渡すときに、オブジェクトの名前が変更されます。詳細は以下をご覧ください。

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

フレックス結果ハンドラー

var ReturnData:ArrayColelction = event.result as ArrayCollection;

式のReturnDataをデバッグして監視すると、次のようになります。

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

プロセスはすべて正しく、値もすべて正しいですが、ReturnDataの0インデックスのオブジェクトの名前は、Column1からcolumn1に、Column2はcolumn2に変更されています。

これはFlexAMFデータセリリゼーションによって行われたと思います。Coulmn1をColumn1などとして取得できるようにするにはどうすればよいでしょうか。そうでない場合、その背後にある概念は何ですか。

前もって感謝します。

4

1 に答える 1

2

はい、これはBlazeDSがJavaBeanの命名規則を使用しているためです。

まず、Javaでは、クラスのメンバー(フィールド、メソッド)に大文字で始まる名前を付けません。

次に、カプセル化の原則に従い、フィールドをプライベートにし、ゲッター/セッターを使用して変更することをお勧めします。

あなたの場合、これは次のようになります。

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 に答える