如何让BlazeDS忽略属性?

我有一个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(); } } } 

(这种结构的原因是我想建立一种方法来讨论Nullable Intergers )

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

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

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

请参阅序列化规则

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

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

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

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

祝一切顺利,

〜哈里斯

它可能有点旧,但它可以帮助一些:有一个很好的票,通过BlazeDS从Java到Flex排除属性

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

Interesting Posts