20 de junio de 2011

Funcionamiento de la etiqueta <Injector/> de MATE

Este post es para intentar aclarar la duda de Carlos González sobre el funcionamiento de los injectors de MATE

Primero lo primero, ¿Qué es un Injector?. De acuerdo a la definición de asfusion
An Injectors tag defined in the Event Map is a container for InjectorPropertys that will inject properties coming from a source to a target, but they can also be used for other purposes.

Lo que en español se traduce como: La etiqueta Injector definida dentro del mapa de eventos o Event Map, es un contenedor para inyectar propiedades que vienen de una fuente hacia un destino, pero también puede ser usada para otros propósitos.

Los injectores funcionan de la siguiente manera.


  1. Ejecutan las etiquetas internas en orden
  2. Los injectores se ejecutan cuando un objeto de una clase es definido en el atributo objetivo es creado
  3. Para que el inyector se ejecute, el objeto de esa clase necesita ser  creado dentro del display list, o ser instanciado por las etiquetas ObjectBuilder o MethodInvoker

Ahora, un ejemplo.
Suponte que tienes una clase que maneja una persona, la clase se llama ManagerPersona, y tiene una clase llamada Persons con nombre y apellido como atributos de la clase, luego quieres "inyectar" la instancia de la clase Persona dentro de una de tus vistas, por ejemplo un panel que se llame DetallePersona, el cual debe tener una instancia de la clase Persona, debes hacer lo siguiente:

<Injectors target ="{DetallePersona}" >
     <PropertyInjector
          source="{ManagerPersona}"
          sourceKey="persona"
          targetKey="persona">
     </PropertyInjector>
</Injectors>

target: La vista, o clase donde quieres inyectar la propiedad
source: De dónde viene tu dato
sourceKey: ManagerPersona, puede contener muchas instancias de diferentes clases, tienes que especificar cuál es la que te interesa.
targetKey: Al igual que el source key, tu target puede tener muchas instancias de diferentes clases, y debes especificar a dónde vas a mandar lo que viene del source.


Saludos.

Aquí un ejemplo super sencillo del funcionamiento de los injectors

Te dejo el fxp compilado en (FB4.5) BAJAR