2012-03-29 7 views
0

Ich benutze Petersilie in meinem Flex-Mobile-Projekt. Ich habe mehrere Zieldienste, kann jedoch keine weiteren Ressourcen finden, um der config.xml-Datei einen weiteren Zieldienst hinzuzufügen. Die Datei ist wie folgt:Flex mobile mit Petersilie

<objects 
    xmlns="http://www.spicefactory.org/parsley" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.spicefactory.org/parsley 
     http://www.spicefactory.org/parsley/schema/2.4/parsley-core.xsd"> 


    <object type="mx.rpc.remoting.RemoteObject" id="genBUS"> 
     <property name="destination" value="genBUS"/> 
     <property name="endpoint" value="http://localhost:8080/ClinASM/messagebroker/amf" /> 
    </object> 
</object> 

In dem Fall, wenn ich einen anderen schaffen

<object type="mx.rpc.remoting.RemoteObject" id="anotherBUS"></objects> 

und tun

[Inject(id='genBUS')] 
public var genBUS:RemoteObject; 

es beschwert sich, dass ich mehrere entfernte Objekte definiert haben. Wie funktioniert es? Wie kann ich einen anderen Zieldienst injizieren? Das wäre großartig mehr Wissen über Petersilie zu gewinnen ...

UPDATE: config.mxml:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Object 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    xmlns="http://www.spicefactory.org/parsley"> 


    <Object id="genBUS" type="mx.rpc.remoting.RemoteObject"> 
     <Property name="destination" value="genBUS" /> 
     <Property name="endpoint" value="http://localhost:8080/ClinASM/messagebroker/amf" /> 
    </Object> 

    <Object id="karBUS" type="mx.rpc.remoting.RemoteObject"> 
     <Property name="destination" value="karBUS" /> 
     <Property name="endpoint" value="http://localhost:8080/ClinASM/messagebroker/amf" /> 
    </Object> 


</mx:Object> 
+0

Sieht aus wie es ist nicht das ‚id‘ Metadaten aufzunehmen und versucht, nach Art statt von ID zu injizieren. – RIAstar

+0

Ja ich weiß..aber wie definiert man hier in der config.xml mehrere Remote-Objekte ?! –

+0

Genau wie Sie, ist das einzige, was ich aus den Informationen, die ich habe, daran denken kann, dass es einen Fehler in der XML-basierten Konfiguration mit IDs geben könnte. Versuchen Sie, dieselbe Konfiguration wie MXML zu schreiben, und sehen Sie, was passiert? Nebenbei bemerkt: Es ist nicht sehr gut, ID-basierte Injektion zu verwenden (vgl. [Parsley docs] (http://www.spicefactory.org/parsley/docs/2.1/manual/) Abschnitte 4.4 und 4.5) – RIAstar

Antwort

2

von ID injizierenden considerer keine gute Praxis, weil Sie einen Namen Abhängigkeit erstellen. Ändern Sie den Namen, oder machen Sie einen Tippfehler, und Ihre Anwendung bricht, und es ist schwer, das zu debuggen.

Also als eine allgemeine Regel sollten Sie versuchen, es zu vermeiden. Die Petersilie docs explain how to do this. Ich füge nur ein einfaches Beispiel hinzu, um Ihnen zu zeigen, wie Sie diese Technik mit Ihren mehreren RemoteObjects verwenden würden.

<fx:Object xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:p="http://www.spicefactory.org/parsley"> 

<fx:Script> 
    import path.to.service.GenBusDelegate; 
    import path.to.service.KarBusDelegate; 
</fx:Script> 

<fx:Declarations> 
    <fx:String id="gateway">http://localhost:8080/ClinASM/messagebroker/amf</fx:String> 

    <s:RemoteObject id="genBus" destination="genBus" endpoint="{gateway}" /> 
    <s:RemoteObject id="karBus" destination="karBus" endpoint="{gateway}" /> 

    <p:Object type="{GenBusDelegate}"> 
     <p:ConstructorArgs> 
      <p:ObjectRef idRef="genBus" /> 
     </p:ConstructorArgs> 
    </p:Object> 

    <p:Object type="{KarBusDelegate}"> 
     <p:ConstructorArgs> 
      <p:ObjectRef idRef="karBus" /> 
     </p:ConstructorArgs> 
    </p:Object> 

</fx:Declarations> 
</fx:Object> 

oder wenn Sie nicht wollen, Konstruktor Argumente verwenden:

<p:Object type="{GenBusDelegate}"> 
     <Property name="remoteObject" idRef="genBus"/> 
    </p:Object> 
+0

Ist path.to.service.GenBusDelegate etwas anderes als meine automatisch generierte GenBUS-Serviceklasse ?! Wenn ja, wie soll ich diesen Unterricht schaffen ?! –

+0

Ursache, wenn ich Tag innerhalb es sagt keinen solchen Parameter von GenBUS ... Hinweis: GenBUS ist meine automatisch generierte GenBUS.as-Serviceklasse –

+0

@lbstr Ja, das 'path.to.service.GenBusDelegate' ist nur ein Beispiel. Ich wusste nicht, dass es eine automatisch generierte Klasse gibt, und ich weiß auch nicht, in welchem ​​Paket es sich befindet. Entweder ersetzt man diese 'import'-Anweisung durch den richtigen Pfad zu Ihrer GenBus-Klasse, oder Sie verwerfen den Import und schreiben einfach der gesamte Pfad im Attribut 'type': '' – RIAstar

Verwandte Themen