【发布时间】:2015-08-05 15:39:03
【问题描述】:
我有 blazeDS 的 Flex/Java 项目。现在我有一个 actionscript 文件,它调用另一个 actionscript 的方法,该方法调用 remoteObject(在 db 上进行简单选择的 java 类)
代码如下:
Home.as
..
private var _dm:DataManager = new DataManager;
public function getPerson():void { // this is connect to a button in .mxml
_dm.getPerson();
}
..
DataManager.as
public class DataManager {
private var _service:RemoteObject;
private var _url:URLRequest;
private var loCs:ChannelSet = new ChannelSet();
public function DataManager () {
_service = new RemoteObject("PeopleDAO");
loCs.addChannel(new AMFChannel("canale", "http://localhost:8080/FlexTRYOUT/messagebroker/amf"));
_service.channelSet = loCs;
}
private function onFault(event:FaultEvent,token:Object):void {
var _fail:String = "fault";
}
private function onResult(event:ResultEvent,token:Object):void {
per = event.result as People; // is a bean class
Alert.show(per.nome);
}
public function getPerson():void {
var token:AsyncToken = _service.getPersona();
token.addResponder(new AsyncResponder(onResult,onFault));
}
}
调用工作正常,它调用DataManger.java 类的java 方法名称getPerson()。它只返回一个带有姓名和姓氏的对象(理解这个该死的 AsyncCall 只是一个很好的世界)。问题是我不知道如何使用经典(java)返回类型将此结果发送到Home.as。我在onResult 方法中有结果,但我不知道如何得到它。
我尝试按照 Brian 的指示进行操作,但我只是在浪费时间。也许是因为我不是 flex actionscript 程序员,但我添加了 Brian 发布的代码:
public function getPerson():void { // this is connect to a button in .mxml
_dm.addEventListener(DATA_RECEIVED, onPersonFound); * compile error 1
_dm.getPerson();
}
错误是 DATA_RECEIVED 未定义
比在 DataManager 中:
public class DataManager {
public static const DATA_RECEIVED:String = "DATA_RECEIVED";
...
private function onResult(event:ResultEvent,token:Object):void {
per = event.result as People; // is a bean class
dispatchEvent(new DataReceivedEvent(DATA_RECEIVED, per)); * compile error 2
}
}
错误 2 是调用了可能的未定义方法 dispatchEvent
错在哪里?请大家写下完整的代码,因为我在使用 flex - actionscript - 从两天开始就开始了,我有一些时间来尝试解决方案。谢谢
好的,对不起,我只是用同样的问题创建一个新的(但更详细和更清晰)。一步一步我正在研究这种语言,并且我设法实现了 Brian 代码,但是 DataManager.as 类必须扩展 EventDispatcher,如果我不扩展它,我就会发布我发布的编译错误。目前我设法在 addEventListener 调用中定义的方法中获取 resultEvent 数据(在本例中为 onPeopleFound )。非常感谢布赖恩,我想我将来肯定会再次需要你的帮助(至少在项目被接受之前)。再见
【问题讨论】:
-
您在
DataManager中有一个错误(私有函数在构造函数中)。我认为这只是你在这里写的一个错字,因为你会收到不同的错误消息,所以我修复了它。 -
谢谢,但有人可以帮我解决这个问题吗??
标签: actionscript-3 apache-flex