Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-02-2010, 16:28   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2010
Beiträge: 15
Unhappy Flex Java BlazeDs Problem ArrayCollection

Hallo,
ich bin neu hier im Forum, komme aber gleich mit einer Frage , bzw. ein
Problem.
Ich habe eine Flex Anwendung und eine Java Anwendung , die per BlazeDS Daten
tauschen sollen. D.h. ich schiebe eigentlich die Beans nur von Java nach Flex.
Das klappt auch gut bei einfachen Datentypen.
Jetzt habe ich eine ArrayListe(java) , die nach FLex als ArrayCollection gehen soll.
In der ArrayListe sind wiederum Arrays eines anaderen Typs.
Also Bean und BeanListe. schicke ich eine Bean rüber, kann ich in Flex diese Bean
auch als ArrayList<Bean> bearbeiten.
Schicke ich aber BeanList rüber , komme ich in Flex nicht an die ArrayList<BeanListe>
ran.
Die Klassen sind sowohll in Flex und Java mit den gleichen Namen etc. angelegt.
Mein RemotObject steck in einer manager.as Klasse und sieht wie folgt aus:

Code:
package de.techem.verbrauchsanalysen.manager {	

   import de.techem.verbrauchsanalysen.beans.AeBean;

   import de.techem.verbrauchsanalysen.beans.AeListe;
   import mx.controls.Alert;
   import mx.messaging.Channel;
   import mx.messaging.ChannelSet;
   import mx.messaging.channels.AMFChannel;
   import mx.rpc.AsyncResponder;
   import mx.rpc.AsyncToken;
   import mx.rpc.events.FaultEvent;
   import mx.rpc.events.InvokeEvent;
   import mx.rpc.events.ResultEvent;
   import mx.rpc.remoting.RemoteObject;
   import mx.collections.ArrayCollection;

   public class Manager {
       private static var instance : Manager; 
      MessageBrokerServlet
      MessageBrokerServlet and "amf" specifies 
       public const url:String =     "http://localhost:8400/Verbrauchsanalysen_Blaze/messagebroker/amf"

       public const name:String = "my-amf";
       public const destination:String = "manager";
       private var ro:RemoteObject;
       public var aeListe:AeListe;
       public var aeBean:AeBean;
      // private var logTarget:FireBugTarget;
 
      public static function getInstance() : Manager  {
         if ( instance == null ) {
                instance = new Manager();
       }
       return instance;
      }
   
      public function Manager() {
          if ( instance != null ){
               throw new Error("Cant Instantiate Manager directly instead call " +
                     "Manager.getInstance() its safe to call it  anytime/manytimes, :)" );
                     return;
            }
        
           // very simple way
           var chanells:ChannelSet = new ChannelSet();
           var simpleChannel:Channel = new AMFChannel(name,url);
           chanells.addChannel(simpleChannel);    
           ro = new RemoteObject(destination);
           ro.channelSet = chanells;
           ro.addEventListener(ResultEvent.RESULT,resultHandler);
          ro.addEventListener(FaultEvent.FAULT,flistener);
           ro.addEventListener(InvokeEvent.INVOKE,Ilistener) ;
      }


     public function makeAeListe(resultReceiver:Function, 
                                    fault:Function=null): void {
        var token:AsyncToken = ro.makeAeListe();
         token.addResponder(new AsyncResponder(

                   function(data:Object, token:Object):void {
                     if(!data || !data.result) {
                        throw new Error("RO [TestName] result object was null, or missing ...");
                        return;
                     }

                     resultReceiver(data.result as AeListe);

                },
                
                   // error function
                   function(info:Object, token:Object):void {
                  // if user sent us error function, lets invoke that too.
                           if(fault != null) fault(info);
                   },
                   token
         ));
      }

      // global listeners, we are not  using them

      private function resultHandler(e:ResultEvent) : void {
  	 // var result:Object = (event as ResultEvent).result as Object ;
      	 var aeliste:AeListe = (e as ResultEvent).result as AeListe ;
      	 //var items:ArrayCollection = new ArrayCollection();
    		if (aeliste)
    		{
        		/** Update the Shopping Cart in the model */
        		//this.model.shoppingCart = ShoppingCartDTO(result);
        		Alert.show("wir haben ein Result" + e.result.toString());
        		 // ---------------------------------
        		/** Array collection for all data */
        		// ---------------------------------
        		/** Intermediate array collection */
        		var items:ArrayCollection = new ArrayCollection();
        		for each(var aebean:AeBean in aeliste)
        		{

            		/** Add the current item to the intermediate array collection */
           		//items.addItem(aeliste(aebean));
            		Alert.show("aenr=" +  aebean.getAenr().toString());
        		}
        		/** Update the Product array collection in the model */
        		//this.model.products = items
        		}
      }

      private function flistener(e:FaultEvent) : void {
        // Log it to Firebug Target
     }

      private function Ilistener(e:InvokeEvent) : void {
            // Log it to Firebug Target
      }

   }

}
Es kommt zwar ein Object vom Typ AeListe rüber , das ist aber leer.

Gruß Nickleby

Geändert von Omega Psi (03-02-2010 um 07:05 Uhr)
Nickleby ist offline   Mit Zitat antworten
Alt 02-02-2010, 16:33   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Kannst du die einzelnen Klassen mit einem Code-Tag umschliessen? [] - Klammern.

Wo sind die Beans?
Omega Psi ist offline   Mit Zitat antworten
Alt 03-02-2010, 06:59   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2010
Beiträge: 15
Hallo hier sind die Beans :

Flex AeBean und AeListe
Code:
package de.techem.verbrauchsanalysen.beans
{
	[Bindable] 
   	[RemoteClass(alias="de.techem.verbrauchsanalysen.beans.AeBean")]
	public class AeBean
	{
	  	[Bindable]
		public var kdnr:String;
		public function getKdnr():String { return kdnr; }
		public function setKdnr(value:String):void { kdnr = value; }

	  	[Bindable]
		public var plz:String;
		public function getPlz():String { return plz; }
		public function setPlz(value:String):void { plz = value; }
	  

	  	[Bindable]
		public var aenr:String;
		public function getAenr():String { return aenr; }
		public function setAenr(value:String):void { aenr = value; }

	    	[Bindable]
		public var ort:String;
		public function getOrt():String { return ort; }
		public function setOrt(value:String):void { ort = value; }
  

	  	[Bindable]
		public var strasse:String;
		public function getStrasse():String { return strasse; }
		public function setStrasse(value:String):void { strasse = value; }

	  	[Bindable]
		public var anzNe:int;
		public function getAnzNe():int { return anzNe; }
		public function setAnzNe(value:int):void { anzNe = value; }

		[Bindable]
		public var beheizteFl:Number;
		public function getBeheizteFl():Number { return beheizteFl; }
		public function setBeheizteFl(value:Number):void { beheizteFl = value; }

	  	[Bindable]
		public var brennstoff:String;
		public function getBrennstoff():String { return brennstoff; }
		public function setBrennstoff(value:String):void { brennstoff = value; }		

		[Bindable]
		public var gesamt_kwh:Number;
		public function getGesamt_kwh():Number { return gesamt_kwh; }
		public function setGesamt_kwh(value:Number):void { gesamt_kwh = value; }

		[Bindable]
		public var gesamt_hz:Number;
		public function getGesamt_hz():Number { return gesamt_hz; }
		public function setGesamt_hz(value:Number):void { gesamt_hz = value; }

		[Bindable]
		public var gesamt_ww:Number;
		public function getGesamt_ww():Number { return gesamt_ww; }
		public function setGesamt_ww(value:Number):void { gesamt_ww = value; }


		...
		...
		...


	}

}
[
Code:
package de.techem.verbrauchsanalysen.beans

{
	import mx.collections.ArrayCollection;
	[RemoteClass(alias="de.techem.verbrauchsanalysen.beans.AeListe")]

	public class AeListe

	{
		public var aeListe:ArrayCollection ; 
		public function getAeListe():ArrayCollection { return aeListe; }
		public function setAeListe(value:ArrayCollection):void { aeListe = value; }
	}
}
]

Hier die Java Bean Klassen :

[
Code:
package de.techem.verbrauchsanalysen.beans;
	import java.util.Date;
	public class AeBean {

		private String kdnr= "";
		private String aenr = "";
		private String plz = "";
		private String ort = "";
		private String strasse = "";
		private Integer anzNe = 0;
		private Double beheizteFl = null;
		private String brennstoff = "";
		private Double gesamtkwh = null;
		private Double gesamt_hz = null;
		private Double gesamt_ww = null;
		private Double gesamtkwh_vj = null;
		private Double gesamt_hz_vj = null;
		private Double gesamt_ww_vj = null;
		private Double betrag_hz = null;
		private Double betrag_ww = null;
		private Double betrag_hz_vj = null;
		private Double betrag_ww_vj = null;
		private Float  klimafaktor = null;
		private Date   abrbeginn = null;
		private Date   abrende = null;
		

		public String getKdnr() {
			return kdnr;
		}
		public void setKdnr(String kdnr) {
			this.kdnr = kdnr;
		}
		
		public String getAenr() {
			return aenr;
		}
		public void setAenr(String aenr) {
			this.aenr = aenr;
		}
		public String getPlz() {
			return plz;
		}
		public void setPlz(String plz) {
			this.plz = plz;
		}
		public String getOrt() {
			return ort;
		}
		public void setOrt(String ort) {
			this.ort = ort;
		}
		public String getStrasse() {
			return strasse;
		}
		public void setStrasse(String strasse) {
			this.strasse = strasse;
		}
		public Integer getAnzNe() {
			return anzNe;
		}
		public void setAnzNe(Integer anzNe) {
			this.anzNe = anzNe;
		}
		public Double getBeheizteFl() {
			return beheizteFl;
		}
		public void setBeheizteFl(Double beheizteFl) {
			this.beheizteFl = beheizteFl;
		}
		public String getBrennstoff() {
			return brennstoff;
		}
		public void setBrennstoff(String brennstoff) {
			this.brennstoff = brennstoff;
		}
		public Double getGesamtkwh() {
			return gesamtkwh;
		}
		public void setGesamtkwh(Double gesamtkwh) {
			this.gesamtkwh = gesamtkwh;
		}
		public Double getGesamt_hz() {
			return gesamt_hz;
		}
		public void setGesamt_hz(Double gesamtHz) {
			gesamt_hz = gesamtHz;
		}
		public Double getGesamt_ww() {
			return gesamt_ww;
		}
		public void setGesamt_ww(Double gesamtWw) {
			gesamt_ww = gesamtWw;
		}
		
		public Double getBetrag_hz() {
			return betrag_hz;
		}
		public void setBetrag_hz(Double betragHz) {
			betrag_hz = betragHz;
		}
		public Double getBetrag_ww() {
			return betrag_ww;
		}
		public void setBetrag_ww(Double betragWw) {
			betrag_ww = betragWw;
		}
		
		public Float getKlimafaktor() {
			return klimafaktor;
		}
		public void setKlimafaktor(Float klimafaktor) {
			this.klimafaktor = klimafaktor;
		}
		public Date getAbrbeginn() {
			return abrbeginn;
		}
		public void setAbrbeginn(Date abrbeginn) {
			this.abrbeginn = abrbeginn;
		}
		public Date getAbrende() {
			return abrende;
Code:
package de.techem.verbrauchsanalysen.beans;

import java.util.ArrayList;
import java.util.Collection;
import java.util.TreeMap;


public class AeListe {
	private ArrayList<AeBean> aeliste;
	public ArrayList<AeBean> getAeliste() {
		return aeliste;
	}
	public void setAeliste(ArrayList<AeBean> aeliste) {
		this.aeliste = aeliste;
	}
}
Diese daten würde ich gerne in Flex als Chart anzeigen lassen

Gruß
Nickleby

Geändert von Omega Psi (03-02-2010 um 07:08 Uhr)
Nickleby ist offline   Mit Zitat antworten
Alt 03-02-2010, 07:14   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Die Eigenschaften der AeListe Klassen korrelieren nicht.

Flex:
Code:
public var aeListe:ArrayCollection ; 
public function getAeListe():ArrayCollection { return aeListe; }
public function setAeListe(value:ArrayCollection):void { aeListe = value; }
Java:
Code:
private ArrayList<AeBean> aeliste;
public ArrayList<AeBean> getAeliste() {
	return aeliste;
}
public void setAeliste(ArrayList<AeBean> aeliste) {
	this.aeliste = aeliste;
}
Liste und list. Zudem würde ich mir folgende Pattern für Bindable Properties in Flex angewöhnen:
Code:
private var _name:String;

[Bindable("nameChanged")]
public function get name():String
{
  return _name;
}

public function set name(value:String):void
{
  if (_name == value)
  {
    return;
  }
  _name = value;
  dispatchEvent(new Event("nameChanged"));
}
Omega Psi ist offline   Mit Zitat antworten
Alt 03-02-2010, 07:21   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Nachtrag: die get/set Funktionen werden in deinem Code nicht aufgerufen. Deine DTOs sind im Grunde genommen das:
Code:
package de.techem.verbrauchsanalysen.beans
{
	[Bindable] 
   	[RemoteClass(alias="de.techem.verbrauchsanalysen.beans.AeBean")]
	public class AeBean
	{
		public var kdnr:String;
		public var plz:String;
		public var aenr:String;
		public var ort:String;
		public var strasse:String;
		public var anzNe:int;
		public var beheizteFl:Number;
		public var brennstoff:String;
		public var gesamt_kwh:Number;
		public var gesamt_hz:Number;
		public var gesamt_ww:Number;
	}
}
Omega Psi ist offline   Mit Zitat antworten
Alt 03-02-2010, 11:07   #6 (permalink)
Neuer User
 
Registriert seit: Feb 2010
Beiträge: 15
Talking

Hallo Omega Psi,
ich habe den Tippfehler gefunden.[RemoteClass(alias="de.techem.verbrauchsanalysen.be ans.AeListe")]
Ein fehlendes "e" am Ende war die Ursache.
Die Tipps mit den _ in den variablen habe ich befolgt.
Danke noch mal für deine Hilfe.

Gruß
Nickleby
Nickleby ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Gameserver mit Java und AS3 Sockets + Flex JTM ActionScript 3 5 09-11-2009 17:36
Adobe Flex User Group Hamburg: Flex und BlazeDS marc Konferenzen und Treffen 6 04-02-2009 08:42
HTTP Service ArrayCollection problem Zwercknase Flex programmieren 2 05-09-2008 21:02
Flex, Java nekro25 Flash Einsteiger 1 13-03-2008 14:36
Webservices - Login - Flex/Java Chris1977 Flex programmieren 0 18-06-2007 09:51


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:08 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele