Flex中ArrayCollection与java中的ArrayList互转
这里说这是Flex用remoting传一个ArrayCollection到后台(后台也用ArrayCollection接参)之后如何转成ArrayList.
(具体操作如将Flex页面的DataGrid中的若干内容添加到DataBase中)
public ArrayList convertArrayCollection(ArrayCollection array){
ArrayList myObjectArray = new ArrayList();
ASTranslator ast = new ASTranslator();
ModuleVOmyObject;
ASObject aso;
for (int i=0;i < array.size(); i++){
myObject = newModuleVO();
aso = new ASObject();
aso = (ASObject) array.get(i);
aso.setType("com.hospital.vo.ModuleVO");
myObject = (ModuleVO) ast.convert(aso,ModuleVO.class);
myObjectArray.add(myObject);
}
return myObjectArray;
}
Flex端VO:
packagevo
{
[Bindable]
publicclassModuleVO
{
publicvarnum:Number;
publicvarMID:int;
publicvarMCode:String;
publicvarMCN:String;
publicvarMEN:String;
publicvarMState:int;
publicfunctionfill(obj:Object):void{
for(vari:*inobj){
this[i]=obj[i];
}
}
}
}
Java端ModuleVO:
packagecom.hospital.vo;
publicclassModuleVO {
publicNumbernum;
publicintMID;
publicStringMCode;
publicStringMCN;
publicStringMEN;
publicintMState;
publicNumber getNum() {
returnnum;
}
publicvoidsetNum(Number num) {
this.num= num;
}
publicintgetMID() {
returnMID;
}
publicvoidsetMID(intmid) {
MID= mid;
}
publicString getMCode() {
returnMCode;
}
publicvoidsetMCode(String code) {
MCode= code;
}
publicString getMCN() {
returnMCN;
}
publicvoidsetMCN(String mcn) {
MCN= mcn;
}
publicString getMEN() {
returnMEN;
}
publicvoidsetMEN(String men) {
MEN= men;
}
publicintgetMState() {
returnMState;
}
publicvoidsetMState(intstate) {
MState= state;
}
}
Java取convertArrayCollection里面的数据:
publicbooleanaddMV( ArrayCollection ModuleList) {
ArrayList al =this.convertArrayCollection(ModuleList) ;
for(Iterator i = al.iterator(); i.hasNext();){
String MID = ((ModuleVO)i.next()).getMID()+"";
System.out.println(MID);
String sql ="insert into T_ModuleV (MVID, MID, MState) values "+
"("+MVID+", "+MID+", "+MState+") ; ";
System.out.println(sql);
}
}
将Flex端传过来的ArrayConllection转为Java端的ArrayList
publicArrayList convertArrayCollection(ArrayCollection array){
ArrayList myObjectArray =newArrayList();
ASTranslator ast =newASTranslator();
ModuleVO myObject;
ASObject aso;
for(inti=0;i < array.size(); i++){
myObject =newModuleVO();
aso =newASObject();
aso = (ASObject) array.get(i);
aso.setType("com.hospital.vo.ModuleVO");
myObject = (ModuleVO) ast.convert(aso, ModuleVO.class);
myObjectArray.add(myObject);
}
returnmyObjectArray;
}
其实传一个对象集合到后台的话直接在后台用ArrayList接参就可以(从java端传到Flex端也是一样),只不过ArrayCollection的vo对象要和后台中的bean对应起来(属性名一样,否则接不到值),需要注意的是Flex中vo对象中的属性要用public.
Flex端传给Java端一个ArrayCollection,Java端用ArrayList接收,之后循环遍历ArrayList,强转,就会取到Flex端传过来的值
For(int I = 0; i
HashMap map = (HashMap)arrayList.get(i) ;
String A = map.get(“Flex端VO的字段名”).toString() ;
}