gpt4 book ai didi

java - BlazeDS 未正确映射 AS 对象

转载 作者:行者123 更新时间:2023-12-01 15:54:01 29 4
gpt4 key购买 nike

我有 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。我想知道如何解决这个问题。谢谢。

最佳答案

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

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

关于java - BlazeDS 未正确映射 AS 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436478/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com