- Mapping von Java-ArrayList<CustomClass> und die Flex-ArrayCollection

Ich versuche momentan das zuordnen einer java-ArrayList mit einem Flex-ArrayCollection, durch LCDS.
Meine Flex-Anwendung nicht aufrufen der Java-Methode gibt die ArrayList, aber ich habe nicht geschafft, zum abrufen der ArrayList, um ihn in ein DataGrid, Flex-Seite.

JavaSide:
Ich habe 2 Klassen:
- Jco_test.java: es enthält die Methode public ArrayList alle()
- Customclass.java: Sie enthält einen Konstruktor initialisiert einige Variablen

    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" Ergebnis="ResultHandler(event);" fault="FaultHandler(event);"

    <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.als:

    [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;       
    }    

Mache ich etwas falsch?
Ich habe noch einige Zweifel... Meine ArrayList keinen Header. Wie kann ich abrufen meine Daten in meinem DataGridColumn?

Vielen Dank für jede Hilfe, die Sie bieten können.
Grüße.

(Sorry wegen der Formatierung Probleme...)


Hatte ich in der Tat vergessen, den getter und den setter.
Jetzt sehe ich im server-log die Werte, die ich suchte. Aber Flex ist noch nicht in der Lage, um die Daten anzuzeigen.

Hier ist der log:

[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)

Ich bin nicht sicher über die DataGridColumn-die datafield-und Kleinschreibung, also änderte ich die Spalten, um zu jedem Feld.

  • Haben Sie wirklich Kappen in die dataField-oder sind es Tippfehler?
  • Bitte Bearbeiten Sie die post zu korrigieren, die code-Formatierung. Und btw, ist das Datenfeld AIRLINE oder Fluggesellschaft?
  • Ich war' sicher, wenn die datafield-case empfinden. Ich habe die Kappen, so dass ich Spiele die Felder in meine Java-Klasse. @Amarghogh: Sorry für die Formatierung, aber ich hatte Probleme bei der Formatierung mein code... weiß nicht, warum, manchmal, mein text will einfach nicht zu formatieren... ich habe das nun geändert dataField, es ist jetzt Fluggesellschaft (wie im java-und actionscript-Klassen).
InformationsquelleAutor BS_C3 | 2009-10-05
Schreibe einen Kommentar