gpt4 book ai didi

java - 使用 BlazeDS 将 ActionScript/Flex ArrayCollection 将 Number 对象转换为 Java Collection

转载 作者:行者123 更新时间:2023-12-01 16:06:19 25 4
gpt4 key购买 nike

我正在使用 Flex 3,并通过 RemoteObject 调用 Java 1.6 方法,并通过 SecureAMFChannel 通过 BlazeDS 和 Spring 2.5.5 集成进行公开。 ActionScript 如下(此代码是位于单独开发网络上的真实示例);

import com.adobe.cairngorm.business.ServiceLocator;
import mx.collections.ArrayCollection;
import mx.rpc.remoting.RemoteObject;
import mx.rpc.IResponder;

public class MyClass implements IResponder
{

private var service:RemoteObject = ServiceLocator.getInstance().getRemoteOjbect("mySerivce");

public MyClass()
{
[ArrayElementType("Number")]
private var myArray:ArrayCollection;

var id1:Number = 1;
var id2:Number = 2;
var id3:Number = 3;

myArray = new ArrayCollection([id1, id2, id3]);

getData(myArray);

}

public function getData(myArrayParam:ArrayCollection):void
{
var token:AsyncToken = service.getData(myArrayParam);
token.addResponder(this.responder); //Assume responder implementation method exists and works
}

}

一旦创建了通过 BlazeDS 公开的服务 Java 类,这将进行一次调用(假设该机制有效,因为它们对不涉及 Collection 参数的所有其他调用都有效)。我的 Java 服务类如下所示;

public class MySerivce {
public Collection<DataObjectPOJO> getData(Collection<Long> myArrayParam) {
//The following line is never executed and throws an exception
for (Long l : myArrayParam) {
System.out.println(l);
}
}

}

抛出的异常是 ClassCastException,表明 java.lang.Integer 无法转换为 java.lang.Long。我通过使用 Object 循环遍历集合来解决这个问题,检查它是否是一个 Integer,将其转换为 1,然后对其执行 .longValue() ,然后将其添加到临时 ArraList 中。郁克。

最大的问题是我的应用程序应该处理来自数据库的数十亿条记录,而 id 将溢出整数的 21.47 亿条限制。我希望其中有 BlazeDS 或 JavaAdapter,将 ActionScript Number 转换为方法中指定的 Long。我讨厌即使我使用泛型,集合的底层元素类型也是整数。如果这是直接的 Java,它就无法编译。

任何想法都值得赞赏。解决方案甚至更好! :)

最佳答案

请阅读以下与您的问题相关的主题。您可以找到一些解决方法。

https://bugs.adobe.com/jira/browse/BLZ-115

https://bugs.adobe.com/jira/browse/BLZ-305

关于java - 使用 BlazeDS 将 ActionScript/Flex ArrayCollection 将 Number 对象转换为 Java Collection<Long>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2509756/

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