Académique Documents
Professionnel Documents
Culture Documents
COM
Metadatos Flex
Alejandro Sánchez
09/06/2009
Explicaciones y ejemplos de los posibles metatags que podemos utilizar para definir nuestras
clases y propiedades al momento de programarlas. Para mas información consultar el blog
internetdeveloping.blogspot.com:
[ArrayElementType]
Para decir que tipo de datos debe contener el ArrayCollection. Por ejemplo:
[ArrayElementType("String")]
public var newStringProperty:Array;
[Bindable]
Para utilizar una propiedad como “data binding expression”, este tipo de propiedades son
utilizadas para que cuando flex detecte un cambio en ellas actualice todos los destinos que tienen
esta propiedad asignada con el típico “propertyChangeEvent”. Por ejemplo:
[Bindable]
public var personas:ArrayCollection
[DefaultProperty]
[Deprecated]
Se utiliza para que el compilador arroje un warning para notificar al usuario que esa
propiedad o clase esta obsoleta.
[Embed]
[Embed(source="com/assets/icono.png")]
private var icon:Class;
[Event]
Se utiliza para definir un evento que una clase arroja. Por ejemplo, el mx.Control.Button
tiene como definido el evento MouseEvent.Click como metadato. De esta manera cuando
estamos definiendo un botón en mxml podemos colocar un handler al evento click.
[Exclude]
[Exclude(name="label", kind="property")]
[ExcludeClass]
[IconFile]
[IconFile("MyButton.png")]
public class MyButton extends Button
{
...
}
[Inspectable]
Se utiliza para decirle al compilador que posibles valores puede tener una propiedad, de que
tipo debe ser (String, int, Number, etc.) cual debe ser su valor por defecto, etc. Para más
información revisar el siguiente vinculo:
http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?con
text=LiveDocs_Book_Parts&file=metadata_141_11.html
[InstanceType]
Para decir de que tipo debe ser una propiedad, por ejemplo (Cobra sentido en el caso de que
la propiedad haya sido definida como una interfaz o una clase muy general):
Este metatag le especifica a flex que no debe lanzar validaciones de data (commits típicos
del data binding) en el evento especificado, por ejemplo:
[Event(name="change", type="flash.events.Event")]
class MyText extends UIComponent {
...
[Bindable(event="valueCommit")]
[NonCommittingChangeEvent("change")]
function get text():String {
return getText();
}
function set text(t):void {
setText(t);
// Dispatch events.
}
}
En este caso cuando el texto (propiedad text) cambie no va a ocurrir ninguna validación,
pero en el caso de que se presione la tecla Enter, ocurrirá un valueCommit y entonces si se
dispararan las validaciones de datos.
[RemoteClass]
Especifica que esta clase va mapeada contra un objeto en el servidor, le dice a flex que debe
incluir la información de la case al momento de serializarla. Por ejemplo:
[RemoteClass(alias="com.CctVO")]
public class Carrito
{
public var id : String;
[Transient]
public function get total() : int
{
return productos.length;
}
}
[Style]
Para especificar que una propiedad es de tipo “estilo” para un componente, por ejemplo:
[Style(name="verticalAlign", type="String",
enumeration="bottom,middle,top", inherit="no")]
[Transient]
Le dice a flex que debe ignorar cierta propiedad a la hora de serializar una clase para ser
mapeada contra un objeto del lado del servidor. Por ejemplo:
[RemoteClass(alias="com.CctVO")]
public class Carrito
{
public var id : String;
public var estado : String;
public var productos : ArrayCollection;
[Transient]
public function get total() : int
{
return productos.length;
}
}