Can you please report [1] that bug?

[1] Issues (github.com)<https://github.com/issues>

From: Roman Isitua<mailto:romanisi...@gmail.com>
Sent: Saturday, September 18, 2021 11:21 PM
To: users@royale.apache.org<mailto:users@royale.apache.org>
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 
<romanisi...@gmail.com<mailto:romanisi...@gmail.com>> 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 
<romanisi...@gmail.com<mailto:romanisi...@gmail.com>> 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 
<mjest...@iest.com<mailto:mjest...@iest.com>> 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 <romanisi...@gmail.com<mailto:romanisi...@gmail.com>>
Enviado el: sábado, 18 de septiembre de 2021 18:37
Para: users@royale.apache.org<mailto:users@royale.apache.org>
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>





Reply via email to