Vous êtes sur la page 1sur 5

HTTP://INTERNETDEVELOPING.BLOGSPOT.

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

<mx:DataGrid id="dg" dataProvider="{ personas }">


</mx:DataGrid>

[DefaultProperty]

Se refiere a la propiedad por defecto del componente, esta “defaultProperty” es la que se


setea en mxml cuando se coloca entre los tags del componente. Por ejemplo:

<mx:DataGrid id="dg" dataProvider="{ personas }">


<mx:columns>
<mx:DataGridColumn dataField="email" headerText="Email"/>
</mx:columns>
</mx:DataGrid>

En este caso la defaultProperty del mx.Control.Datagrid seria un objeto de tipo Columns,


que a su vez tiene una defaultProperty de tipo ArrayCollection de DatagridColumn.

[Deprecated]

Se utiliza para que el compilador arroje un warning para notificar al usuario que esa
propiedad o clase esta obsoleta.

[Embed]

Le dice al compilador que incluya el recurso dentro de la película al momento de


compilarla. Un recurso puede ser una imagen, sonido, video, icono, etc. Por ejemplo:

[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.

<mx:Button click="buttonClickHandler()" />

[Exclude]

Se utiliza para decirle al compilador que no muestre esta propiedad al momento de


autocompletar, es como decir que el atributo es privado, por ejemplo:

[Exclude(name="label", kind="property")]

[ExcludeClass]

Le dice al compilador que excluya la clase al momento de autocompletar, es como decir


que la clase es privada.

[IconFile]

Es el icono que va a tener la clase (componente). Por ejemplo:

[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):

// Define a deferred property for the top component.


[InstanceType("mx.controls.Label")]
public var topRow:IDeferredInstance;
[NonCommittingChangeEvent]

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;

[Inspectable(defaultValue="sin pagar",enumeration="sin pagar,pagado")]


public var estado : String;

public var productos : ArrayCollection;

[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;
}
}

En este caso no se debe enviar la propiedad “total” al servidor ya que es un atributo


calculado en ejecución. Para ver mas información hacer click en el siguiente vinculo:
http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_3.html

Vous aimerez peut-être aussi