Can you please report [1] that bug? [1] Issues (github.com)<https://github.com/issues>
From: Roman Isitua<mailto:[email protected]> Sent: Saturday, September 18, 2021 11:21 PM To: [email protected]<mailto:[email protected]> Subject: Re: crux not injecting model in view 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]<mailto:[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]<mailto:[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]<mailto:[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]<mailto:[email protected]>> Enviado el: sábado, 18 de septiembre de 2021 18:37 Para: [email protected]<mailto:[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<http://ns.apache.org/royale/basic>" xmlns:j="library://ns.apache.org/royale/jewel<http://ns.apache.org/royale/jewel>" xmlns:crux="library://ns.apache.org/royale/crux<http://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<http://ns.apache.org/royale/jewel>" xmlns:js="library://ns.apache.org/royale/basic<http://ns.apache.org/royale/basic>" xmlns:html="library://ns.apache.org/royale/html<http://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>
