如何让BlazeDS忽略属性?

时间:2011-02-10 12:40:08

标签: java flex blazeds amf

我有一个java类,其中一个字段包含getter和setter,第二对getter和setter以另一种方式访问​​该字段:

public class NullAbleId {
   private static final int NULL_ID = -1;
   private int internalId;

   getter & setter for internalId

   public  Integer getId() {
     if(this.internalId == NULL_ID) {
       return null;      
     } else {
       return Integer.valueOf(internalId);
     }
    }

    public void setId(Integer id) {
      if (id == null) {
        this.internalId = NULL_ID;
      } else {
        this.internalId = id.intValue();
      }
    }

}

(这种结构的原因是我想构建一个way to hande Nullable Intergers

在Flash / Flex客户端,我有一个具有两个属性的类:id和internalId(id属性仅用于测试,最后它们应返回internalId值)

BlazeDS接缝传输两个值:id和internalId,因为它们都有一个完整的getter setter对。 我希望Blaze不要传输id,只应传输internalId。但我不知道如何配置它。

3 个答案:

答案 0 :(得分:3)

BlazeDS序列化的所有规则都在这里:

http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=serialize_data_3.html

这是一个引用:“不包括静态,瞬态或非公共字段,以及非公共或静态的bean属性。”

因此,如果您可以使您的id属性符合该条件,则将其排除。另一个选择是创建一个明确不包含id属性的自定义序列化程序。

一切顺利,

〜哈里斯

答案 1 :(得分:1)

除了transient / marshaller,您还可以实现Externalizable接口并创建自定义序列化。

请参阅serialization rules

答案 2 :(得分:0)

它可能有点旧,但它可以帮助一些:关于excluding properties from Java to Flex via BlazeDS

的票很好

编辑:一个更好的解决方案,是使用@AmfIgnore(或@AmfIgnoreField,如果你的序列化直接在字段上)注释存在于spring-flex-core.jar中(我用过) 1.5.2-RELEASE)