BlazeDS如何在Java Bean类中处理Map?

时间:2012-07-23 08:31:28

标签: java flex blazeds

// Flex类

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 Class

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,但其属性消息为空。

如果我们在上面的代码中使用RemoteClass标记,你能否告诉我什么是Flex等效的Map。

这在弹性方面是空的。         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

1 个答案:

答案 0 :(得分:1)

这里有很多东西:

  • 变量名称:BlazeDS使用公共字段和公共访问器作为序列化变量名称。所以从flex的角度来看,MessageBundle java类只包含一个名为“messageBundle”的地图,而没有任何名为“messages”的地图
  • 它将被转换为对象,所以没关系
  • 在你的getMessage函数客户端,我不认为该函数会做你认为它会做的:)。在当前版本中,它将获取名为“key”的属性。为了达到你的需要,你应该用“messages [key]”
  • 替换“messages.key”
  • 您不需要2次[Bindable]元数据