【问题标题】:BlazeDS not mapping AS objects correctlyBlazeDS 未正确映射 AS 对象
【发布时间】: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


【解决方案1】:

通常的方法是创建一个具有类型属性的类,然后根据类型决定要做什么。

就 BlazeDS 的行为而言:这里没有足够的信息可以确定,但是如果您有一个 java 方法调用,则返回的对象将始终是相同的类型。如果您有一个名为 getEvent() 的方法返回一个 sheduledEvent 对象,那么它总是会返回一个 scheduleEvent 对象。如果你有两个方法调用 - getScheduledEvent() 和 getStartEvent() - 那么你可以在 flex 端有不同的响应者并在那里开始你不同的逻辑。

【讨论】:

  • Yes -- 一个事件的一个响应者... 但是,在这种情况下,服务器正在通过 BlazeDS 发送消息。因此,服务器通过通道发送消息,并且 message.body 应该是 ScheduledEvent,但我不断收到 StartEvent。我什至在服务器端代码上设置了一个断点,并在消息通道中发送回一个 ScheduledEvent,但是当它到达 Flex 端时,它变成了一个 StartEvent。希望这能消除混乱。我应该提到我正在使用的消息传递系统。
猜你喜欢
  • 2019-07-30
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
相关资源
最近更新 更多