1

//フレックスクラス

package com.mycompany{
         import flash.utils.Dictionary;

         [Bindable]
         [RemoteClass(alias="com.mycompany.bean.MessageBundle")]

         [Bindable]
         public class MessageBundleVO{
             public var messages:Object ;

             public function getMessage(key:String):String{
                return messages.key as String;
             }
        }
    }

//Javaクラス

package com.mycompany.bean;

        import java.io.Serializable;
        import java.util.Map;

        public class MessageBundle implements Serializable {
            private static final long serialVersionUID = 1L;
            private Map messages;

            public Map getMessageBundle() {
                return messages;
            }

            public void setMessageBundle(Map messageBundle) {
                this.messages = messageBundle;
            }

            public String toString(){
                return messages.toString();
            }
        }

すべてが適切にリンクされており、MessageBundleVOのインスタンスはnullではありませんが、その属性メッセージはnullになります。

上記のコードで指定されているようにRemoteClassタグを使用する場合、Mapに相当するFlexとは何ですか。

これはフレックス側でヌルになります。MessageBundleVO.messages

    The Aodbe
    http://livedocs.adobe.com/flex/3/html/help.html?content=data_access_4.html

    is suggesting
    Array (sparse)—->java.util.Map–>java.util.Map
4

1 に答える 1

1

ここに多くのものがあります:

  • 変数名: BlazeDS は、シリアル化された変数名としてパブリック フィールドとパブリック アクセサーを使用します。したがって、フレックスの観点から見ると、MessageBundle Java クラスには「messageBundle」と呼ばれるマップのみが含まれ、「メッセージ」と呼ばれるものは何も含まれていません。
  • オブジェクトとして変換されるので、これでOK
  • あなたのgetMessage関数のクライアント側では、関数があなたが思っていることをするとは思いません:)。現在のバージョンでは、「key」という名前のプロパティをフェッチします。必要なものを実現するには、「messages.key」を「messages[key]」に置き換える必要があります
  • [Bindable] メタデータを 2 倍にする必要はありません
于 2012-07-23T13:07:44.333 に答える