【发布时间】:2011-03-25 18:18:19
【问题描述】:
我有 2 个相同的 java 类(想象一下 getter 和 setter):
class ScheduledEvent {
private String eventName;
private List<eventValues> values;
}
class StartEvent {
private String eventName;
private List<eventValues> values;
}
在 flex 方面,我有相应的对象:
[RemoteClass(alias="com.project.events.ScheduledEvent")]
public class ScheduledEvent {
public var eventName:String;
public var values:ArrayCollection;
}
[RemoteClass(alias="com.project.events.StartEvent")]
public class StartEvent{
public var eventName:String;
public var values:ArrayCollection;
}
现在有两个相同的类是有原因的。当某事被“安排”时,我应该得到 ScheduleEvent 对象,当一个事件开始时,我应该得到 StartEvent 对象。根据我返回的对象,我会做不同的事情。
我的问题是,在后端,它会向我发送 ScheduleEvent 对象,但是一旦它到达 flex 端(通过 BlazeDS),它就会变成一个 StartEvent....
起初,我以为是因为这两个事件具有完全相同的变量,所以我尝试通过添加一个虚拟变量(String foobar)来更改 ScheduledEvent,但这似乎没有任何区别。
有谁知道为什么会发生这种情况以及我该如何解决它?
谢谢。
编辑: 我应该提到我没有使用 java 方法调用...我使用的是 BlazeDS 消息传递系统。这就是为什么我不使用“一个 java 方法调用一个响应者”方法的原因。因此,在 message.body 中,我应该收到 ScheduledEvent,但我一直收到 StartEvent。我想知道是不是因为这两个对象具有相同的属性,而 BlazeDS 不知道如何正确映射它们......我什至在 java 服务层中设置了一个断点,以确保正在发送适当的对象返回,它是......但是当 BlazeDS 将其序列化和反序列化到 flex 端时,它现在是一个 StartEvent。我想知道如何解决这个问题。谢谢。
【问题讨论】:
-
您是否忘记将
alias="com.project.events.scheduledEvent"中的s大写? -
不......它在那里......当我在 StackOverflow 中输入时,缺少的“s”只是一个错字...... :) 我现在会修复它......谢谢你的指点出来吧。
标签: java apache-flex serialization mapping blazeds