我用的是LCDS和Flex。当我从java发送对象到Flex时,我不想发送所有属性。据我所知,如果您不想序列化,则使变量暂时化。
例如:
private transient Date birthDate;
public Date getBirthDate(){
return birthDate;
}
public void setBirthDate(Date val){
birthDate = val;
//Some code here.
}现在序列化的对象不应该包含birthDate。但是当我看到AMF日志时,对象中有一个带有值的birthDate。
序列化检查代码并检查私有变量是短暂的(我不明白它如何访问私有属性。我有点困惑。)
我是否应该将变量标记为公共的。然后setter和setter就没有意义了,而且我还用setter方法编写了一些代码。所以我需要赛特。
问题:
我在对象中有50-60个变量,不应该序列化4或5个变量.因此,在这么大的对象中编写缓冲序列化程序是一个很大的痛苦。我看到的另一个缺点是,如果编写自己的序列化程序,hibernate将无法使用该对象。
发布于 2011-09-07 22:41:16
我通常使用花岗岩数据服务(而不是LCDS或Blaze),但您是否尝试过使用瞬态ActionScript标记?(当然,如果要生成.as类,这可能是一个问题-可能存在@瞬态注释?)
http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_3.html
它的工作方式取决于谁(什么)正在执行序列化。例如,我认为花岗岩的行为与烈火略有不同。我不认为Granite序列化了私有属性(可能是错误的)。此外,我还记得几年前,我为Granite创建了一个自定义序列化类,它告诉它使用“瞬态”Java关键字忽略字段(使用反射)。
我不知道您是否可以在Blaze/LCDS中实现自定义序列化逻辑(同样容易),但这也可能是值得研究的东西。这不是一个巨大的痛苦(就像你说的那样),因为它只是我定制的一个类,但我只知道这是简单的w/Granite。
为此,可能会有一两个助手库。这个人写道,http://www.flexpasta.com/index.php/2008/05/19/blazeds-with-annotations-for-remote-objects/似乎是在做你要求的相反的事情。(在没有setter时强制序列化。)
发布于 2014-03-11 14:35:59
如果您想要将一个Java属性从序列化到Flex中排除,下面是一个相同问题的帖子:https://stackoverflow.com/a/22328869/244911
发布于 2013-10-02 07:39:59
只需将瞬态设置在getter上就足够了,将其放在setter上是多余和多余的,并将在编译器警告中重新出现。
https://stackoverflow.com/questions/7340347
复制相似问题