我目前正在尝试通过LCDS映射带有Flex ArrayCollection的java ArrayList。 我的Flex应用程序确实调用了返回ArrayList的Java方法,但我还没有设法检索ArrayList以在Flex侧的DataGrid中显示它。
JavaSide: 我有2个班: - Jco_test.java:它包含方法public ArrayList all() - Customclass.java:它包含一个初始化一些变量的构造函数
public class CustomClass {
String airline;
String cityFrom;
String cityTo;
Date flightDate;
BigDecimal price;
public CustomClass(String s1, String s2, String s3, Date d, BigDecimal bd){
airline = s1;
cityFrom = s2;
cityTo = s3;
flightDate = d;
price = bd;
}
}
FlexSide:
test.mxml:
import mx.messaging.AbstractConsumer;
import mx.collections.ArrayCollection;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
public var flightList:ArrayCollection;
public function ResultHandler(event:ResultEvent):void{
flightList = (event.result as ArrayCollection);
}
public function FaultHandler(event:FaultEvent):void{
flightList = new ArrayCollection();
ta.text = "Error id: " + event.fault.errorID + "\n";
ta.text += "String: " + event.fault.faultString + "\n";
ta.text += "Code: " + event.fault.faultCode + "\n";
ta.text += "Detail: " + event.fault.faultDetail + "\n";
ta.text += "Stack: \n" + event.fault.getStackTrace() + "\n";
}
RemoteObject id =“ro”destination =“jco”result =“ResultHandler(event);”故障= “FaultHandler(事件);”
<mx:Panel title="monTest" width="699" height="549" x="10">
<mx:Button label="go" click="ro.all();"/>
<mx:DataGrid dataProvider="flightList">
<mx:columns>
<mx:DataGridColumn dataField="AIRLINE" headerText="Airline" />
<mx:DataGridColumn dataField="CITYFROM" headerText="From" />
<mx:DataGridColumn dataField="CITYTO" headerText="To" />
<mx:DataGridColumn dataField="FLIGHTDATE" headerText="Date" />
<mx:DataGridColumn dataField="PRICE" headerText="Price" />
</mx:columns>
</mx:DataGrid>
<mx:TextArea id="ta" width="100%" height="219"/>
</mx:Panel>
CustomClass.as:
[Bindable]
[RemoteClass(alias="utils.CustomClass")]
public class CustomClass{
public var airline:String;
public var cityFrom:String;
public var cityTo:String;
public var flightDate:Date;
public var price:String;
}
我做错了吗? 我还有一些疑问......我的ArrayList没有标题。如何在DataGridColumn中检索数据?
感谢您提供的任何帮助。 问候。
(抱歉格式化问题......)
我确实忘记了吸气剂和制定者。 现在,我可以在服务器日志中看到我正在寻找的值。但Flex仍然无法显示数据。
这是日志:
[LCDS]Adapter 'java-object' called 'com.alti.jco.jco_test.all(java.util.Arrays$A
rrayList (Collection size:0)
)'
[LCDS]Result: 'java.util.ArrayList (Collection size:3)
[0] = utils.CustomClass
cityTo = aa
price = 30
cityFrom = aa
flightDate = Sun Jan 12 00:00:00 CET 1913
airline = aa
[1] = utils.CustomClass
cityTo = bb
price = 30
cityFrom = bb
flightDate = Sun Jan 12 00:00:00 CET 1913
airline = bb
[2] = utils.CustomClass
cityTo = cc
price = 30
cityFrom = cc
flightDate = Sun Jan 12 00:00:00 CET 1913
airline = cc
'
[LCDS]Serializing AMF/HTTP response
Version: 3
(Message #0 targetURI=/2/onResult, responseURI=)
(Externalizable Object #0 'DSK')
(Externalizable Object #1 'flex.messaging.io.ArrayCollection')
(Array #2)
[0] = (Typed Object #3 'utils.CustomClass')
cityTo = "aa"
price = "30"
cityFrom = "aa"
flightDate = Sun Jan 12 00:00:00 CET 1913
airline = "aa"
[1] = (Typed Object #5 'utils.CustomClass')
cityTo = "bb"
price = "30"
cityFrom = "bb"
flightDate = (Ref #4)
airline = "bb"
[2] = (Typed Object #6 'utils.CustomClass')
cityTo = "cc"
price = "30"
cityFrom = "cc"
flightDate = (Ref #4)
airline = "cc"
1.254745294734E12
(Byte Array #7, Length 16)
(Byte Array #8, Length 16)
(Byte Array #9, Length 16)
我不确定DataGridColumn的数据字段区分大小写,因此我更改了数据字段以匹配每个字段。
答案 0 :(得分:1)
1观察
在CustomClass.java中添加getter和setter
答案 1 :(得分:0)
我解决了我的问题=) 我有一个有约束力的错误。
我的dataGrid使用“flightList”作为dataProvider,但我没有将它定义为Bindable变量。
非常感谢您的回答=)