I got it to work on *royale version 0.9.7*.
I corrected a mistake I was making as follows
// [Inject( source = "lovController.lovBO._lovs2", bind = "true" )]
[Inject( source = "lovController.genericLovs", bind = "true" )]
I was using
[Inject( source = "lovController.lovBO._lovs2", bind = "true" )]
instead of
[Inject( source = "lovController.genericLovs", bind = "true" )]
However, I must add that the above change does not work on *royale 0.9.8*.
I tested it again. it still does not work.
I will have to port my work from royale 0.9.8 to 0.9.7.
Regards,
On Sat, Sep 18, 2021 at 8:37 PM Roman Isitua <[email protected]> wrote:
> Just an update on this issue. I implemented the above using royale 0.9.8.
>
> I decided to try the same thing on royale 0.9.7. It is still working
> however I can see a log message that is not available when running on 0.9.8
>
> Here it is
>
> *warning: no describeType entry for 'lovBO' on non-dynamic type
> 'LovController'*
>
> What is the meaning of this warning ? From the log below it is clear the
> setter injection failed. Hence the reason the dropdown is not being
> populated.
>
>
> Language.as:254 InjectProcessor set up [Inject(
> source="logInController.logInParams", bind="true" )] on Bean{ source:
> [object Object], name: null }
>
> *Language.as:254 warning: no describeType entry for 'lovBO' on non-dynamic
> type 'LovController'InjectProcessor.as:385 Uncaught Error: Unexpected
> result*
> at
> org.apache.royale.crux.processors.InjectProcessor.addPropertyBinding
> (InjectProcessor.as:385)
> at org.apache.royale.crux.processors.InjectProcessor.setUpMetadataTag
> (InjectProcessor.as:139)
> at
> org.apache.royale.crux.processors.InjectProcessor.org.apache.royale.crux.processors.BaseMetadataProcessor.setUpMetadataTags
> (BaseMetadataProcessor.as:81)
> at org.apache.royale.crux.BeanFactory.setUpBean (BeanFactory.as:378)
> at Function.org.apache.royale.crux.CruxManager.setUpView
> (CruxManager.as:106)
> at Function.org.apache.royale.crux.CruxManager.setUp
> (CruxManager.as:88)
> at org.apache.royale.crux.BeanFactory.setUpEventHandler
> (BeanFactory.as:517)
> at FrontEnd.org.apache.royale.events.EventDispatcher.fireListeners
> (EventDispatcher.as:139)
> at Function.goog.events.EventTarget.dispatchEventInternal_
> (eventtarget.js:372)
> at
> org.apache.royale.crux.beads.JSStageEvents.org_apache_royale_crux_beads_JSStageEvents_mutationDetected
> (JSStageEvents.as:209)
>
>
> I have attached the complete log to this mail
>
> On Sat, Sep 18, 2021 at 7:44 PM Roman Isitua <[email protected]>
> wrote:
>
>> Thanks for helping out.
>>
>> I forgot to attach the GenericLOV source code.
>>
>> Find attached to this email.
>>
>>
>> On Sat, Sep 18, 2021 at 6:48 PM Maria Jose Esteve <[email protected]>
>> wrote:
>>
>>> Hi Roman,
>>>
>>> I saw your previous code and now I will see this one you attach. I will
>>> try to help you BUT I don't know if I will be able to because although I
>>> use Crux and amf my implementation is different from yours and I don't
>>> control all the concepts (my original project was set up by a Royale expert
>>> company).
>>>
>>>
>>>
>>> I'll let you know if I get something.
>>>
>>> Hiedra.
>>>
>>>
>>>
>>> *De:* Roman Isitua <[email protected]>
>>> *Enviado el:* sábado, 18 de septiembre de 2021 18:37
>>> *Para:* [email protected]
>>> *Asunto:* crux not injecting model in view
>>>
>>>
>>>
>>> I intend to populate a jewel drop down with data from the server. I have
>>> configured the controller and service in the Beans.xml file.
>>>
>>> From the logs injection happens.
>>>
>>>
>>>
>>> However, I have observed that the model is not injected into the view.
>>>
>>>
>>>
>>> Any ideas ?
>>>
>>>
>>>
>>> My code is implemented as follows
>>>
>>>
>>>
>>> LovBO
>>>
>>>
>>>
>>> public class LovBO
>>>
>>> {
>>>
>>>
>>>
>>> /**
>>>
>>>
>>> * The [Dispatcher] metadata tag instructs Crux to inject an event
>>> dispatcher.
>>>
>>>
>>> * Event's dispatched via this dispatcher can trigger event
>>> mediators.
>>>
>>> */
>>>
>>> [Dispatcher]
>>>
>>> public var dispatcher : IEventDispatcher;
>>>
>>>
>>>
>>> [Inject( "lovService" )]
>>>
>>> public var lovService:RemoteObject;
>>>
>>>
>>>
>>> [Inject]
>>>
>>> public var serviceHelper:ServiceHelper;
>>>
>>>
>>>
>>> [Bindable]
>>>
>>> public var _lovs:Array;
>>>
>>>
>>>
>>> [Bindable]
>>>
>>> public var _lovs2:ArrayList;
>>>
>>>
>>>
>>> LovController
>>>
>>>
>>>
>>> public class LovController
>>>
>>> {
>>>
>>> [Inject]
>>>
>>> public var lovBO:LovBO;
>>>
>>>
>>>
>>> // [Bindable]
>>>
>>> public var genericLovs:ArrayList;
>>>
>>>
>>>
>>> public function LovController()
>>>
>>> {
>>>
>>> trace(' -- LovController -- ');
>>>
>>> }
>>>
>>>
>>>
>>> /**
>>>
>>>
>>> * [PostConstruct] methods are invoked after all dependencies are
>>> injected.
>>>
>>>
>>> * In this example, we set up a default user after the bean is
>>> created.
>>>
>>> */
>>>
>>> [PostConstruct]
>>>
>>> public function fetchLovs() : void
>>>
>>> {
>>>
>>>
>>>
>>> trace(' -- [PostConstruct] fetch lovs country prefix -- ');
>>>
>>>
>>>
>>> //genericLovs = lovBO.lov2;
>>>
>>>
>>>
>>> lovBO.lov2;
>>>
>>> }
>>>
>>>
>>>
>>> Beans.xml
>>>
>>> <services:LovBO id="lovBO"/>
>>>
>>> <controllers:LovController id="lovController"/>
>>>
>>>
>>>
>>>
>>>
>>> The application.mxml
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> <j:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
>>>
>>> xmlns:js="library://ns.apache.org/royale/basic"
>>>
>>> xmlns:j="library://ns.apache.org/royale/jewel"
>>>
>>> xmlns:crux="library://ns.apache.org/royale/crux"
>>>
>>> xmlns:config="com.spacio.fm.client2.config.*"
>>>
>>> xmlns:views="com.spacio.fm.client2.views.*"
>>>
>>> initialize="setUp;initApp(event);">
>>>
>>>
>>>
>>> <!-- <fx:Style source="../../main/resources/default.css"/> -->
>>>
>>> <fx:Script>
>>>
>>> <![CDATA[
>>>
>>>
>>>
>>> public function setUp():void
>>>
>>> {
>>>
>>> tracer('application setUp stub');
>>>
>>> }
>>>
>>>
>>>
>>> private function initApp(event:Event): void
>>>
>>> {
>>>
>>> trace(" -- initApp -- ");
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> trace(" -- end of init app -- ");
>>>
>>> }
>>>
>>>
>>>
>>> ]]>
>>>
>>> </fx:Script>
>>>
>>>
>>>
>>> <j:valuesImpl>
>>>
>>> <js:SimpleCSSValuesImpl />
>>>
>>> </j:valuesImpl>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> <j:beads>
>>>
>>> <crux:JSStageEvents packageExclusionFilter="_default_"/>
>>>
>>> <crux:Crux>
>>>
>>> <crux:beanProviders>
>>>
>>> <config:Beans/>
>>>
>>> </crux:beanProviders>
>>>
>>> <crux:config>
>>>
>>> <crux:CruxConfig
>>>
>>> eventPackages="com.spacio.fm.client2.events.*"
>>>
>>> viewPackages="com.spacio.fm.client2.views.*"
>>>
>>> />
>>>
>>> </crux:config>
>>>
>>> </crux:Crux>
>>>
>>> <js:ClassAliasBead />
>>>
>>> </j:beads>
>>>
>>>
>>>
>>> <j:initialView>
>>>
>>> <views:MainView width="100%" height="100%"/>
>>>
>>> </j:initialView>
>>>
>>>
>>>
>>> </j:Application>
>>>
>>>
>>>
>>> MainView.mxml ( I have attached the complete source for the
>>> MainView.xml. and the other classes)
>>>
>>>
>>>
>>>
>>>
>>> <j:View xmlns:fx="http://ns.adobe.com/mxml/2009"
>>>
>>> xmlns:j="library://ns.apache.org/royale/jewel"
>>>
>>> xmlns:js="library://ns.apache.org/royale/basic"
>>>
>>> xmlns:html="library://ns.apache.org/royale/html"
>>>
>>> initComplete="initCompleteHandler(event)"
>>>
>>> xmlns:views="com.spacio.fm.client2.views.*"
>>>
>>> >
>>>
>>>
>>>
>>> <j:beads>
>>>
>>> <js:SimpleStatesImpl/>
>>>
>>> <js:ViewDataBinding/>
>>>
>>> <!-- <js:ContainerDataBinding/> -->
>>>
>>> </j:beads>
>>>
>>>
>>>
>>> <j:states>
>>>
>>> <js:State name="joinus" />
>>>
>>> <js:State name="registerFM" />
>>>
>>> <js:State name="loggedIn" />
>>>
>>> </j:states>
>>>
>>>
>>>
>>>
>>> <!-- xmlns:binding="org.apache.royale.binding.*"
>>> xmlns:models="com.spacio.fm.client2.model.*"
>>> xmlns:models="com.spacio.fm.client2.service.*"
>>>
>>>
>>>
>>> <fx:Script source="MainBean.as">
>>>
>>> </fx:Script> -->
>>>
>>> <fx:Script>
>>>
>>> <![CDATA[
>>>
>>> import org.apache.royale.jewel.PopUp;
>>>
>>> import org.apache.royale.events.CloseEvent;
>>>
>>> import org.apache.royale.jewel.Button;
>>>
>>> import org.apache.royale.events.MouseEvent
>>> ;
>>>
>>> import org.apache.royale.collections.ArrayList;
>>>
>>>
>>>
>>> [Bindable]
>>>
>>> public var genericLovs:ArrayList;
>>>
>>>
>>>
>>> //example of setter style binding Injection
>>>
>>> [Inject( source = "lovController.lovBO._lovs2", bind = "true"
>>> )]
>>>
>>> public function setGenericLovs(val:ArrayList):void
>>>
>>> {
>>>
>>> trace("injected lov array list. hurray !! ");
>>>
>>>
>>>
>>> this.genericLovs = val;
>>>
>>>
>>>
>>> trace(" generic lov has been set ! ");
>>>
>>> }
>>>
>>>
>>>
>>> // the dropdown defined as follows
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> <j:DropDownList id="phoneCountryPrefix" width="30%" labelField=
>>> "description" dataProvider="{genericLovs}">
>>>
>>> </j:DropDownList>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>