2012-03-29 2 views
0

Я использую Parsley в своем мобильном проекте flex. У меня есть несколько служб назначения, но я не могу найти больше ресурсов о том, как добавить другую службу назначения в файл config.xml. Файл, как показано ниже:Flex мобильный телефон Parsley

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

В случае, когда я создаю еще один

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

и сделать

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

жалуется, что я определил несколько удаленных объектов. Как это работает? Как я могу ввести другую службу назначения? Это было бы здорово, чтобы получить больше знаний о Петрушка ...

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

Похоже, не подбирая Ид 'метаданных и пытается внедрить по типу, а не по ID. – RIAstar

+0

Да, я знаю .. но как определить здесь в config.xml несколько удаленных объектов ?! –

+0

Так же, как вы, так что единственное, что я могу вспомнить из информации, которую я имею, это то, что может быть ошибка в конфигурации на основе XML с идентификаторами. Попробуйте написать ту же конфигурацию, что и MXML, и посмотреть, что произойдет? На стороне примечания: не очень хорошая практика использовать инъекцию на основе ИД (см. [Parsley docs] (http://www.spicefactory.org/parsley/docs/2.1/manual/) разделы 4.4 и 4.5) – RIAstar

ответ

2

Инъекционное по идентификатору не considerer быть хорошей практикой, потому что вы создаете имя на основе зависимости. Измените имя или сделайте опечатку, и ваше приложение сломается, и его сложно отладить.

Как правило, вы должны стараться избегать этого. The Parsley docs explain how to do this. Я просто добавлю простой пример, чтобы показать вам, как вы будете использовать эту технику с несколькими удаленными объектами RemoteObjects.

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

или если вы не хотите использовать аргументы конструктора:

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

Является ли path.to.service.GenBusDelegate чем-то другим, что мой автогенерированный класс сервиса GenBUS ?! если да, то как я могу создать этот класс ?! –

+0

вызывают, если я включаю тег внутри он не говорит об этом параметре GenBUS ... note: GenBUS is мой автогенерированный класс службы GenBUS.as –

+0

@lbstr Да, это 'path.to.service.GenBusDelegate' является просто примером. Я не знал, что есть автоматически сгенерированный класс, и я тоже не знаю, в каком пакете он находится. Так что либо вы заменяете этот оператор 'import' правильным путем к вашему классу GenBus, либо отбрасываете импорт и просто пишете весь путь в атрибуте 'type': '' – RIAstar