[Transient] Metadata tag

Sin ningún tipo de duda una de las cosas más elegantes que tiene AS3 es el sistema de metadata asociado al código que permite resolver de forma fácil y elegante aspectos bastante complejos de resolver por otros medios.

Uno de los metatags que más me gusta es [Transient], el cual paradójicamente no viene documentado en la ayuda. Cuando trabajamos con VO’s compartidos entre cliente y servidor mediante el metatag [RemoteClass] ya sea sobre AMF0 o AMF3, podemos tener VO’s con propiedades presentes en el lado cliente pero que no queremos hacer llegar al servidor.


Por ejemplo, imaginemos la siguiente clase:

[ftf w=”500″ h=”300″]
package {
[RemoteClass(alias=”com.mif.vos.DomainVO”)]
public class DomainVO {
public var list:Array;
private var _list:ArrayCollection;

public function get listAC ():ArrayCollection
{
if (_list == null)
{
_list = new ArrayCollection (list);
}
return _list;
}

public function set listAC (listAC:ArrayCollection):void
{
this._list = listAC;
}
}
}[/ftf]

Esta clase al serializarse para ser mandada al server sobre AMF-X tendría dos propiedades list (propiedad pública) y listAC (getter / setter). Pero listAC es una propiedad que no se debería pasar al servidor, ya que sus datos son los mismos que los de list, pero enmascarados en un ArrayCollection (p.e para aplicar vistas, filtros o bindings).

Para evitar la serialización de esta propiedad basta con ponerle el metatag [Transient].

[ftf w=”500″ h=”300″]
package {
[RemoteClass(alias=”com.mif.vos.DomainVO”)]
public class DomainVO {
public var list:Array;
private var _list:ArrayCollection;

[Transient]
public function get listAC ():ArrayCollection
{
if (_list == null)
{
_list = new ArrayCollection (list);
}
return _list;
}

public function set listAC (listAC:ArrayCollection):void
{
this._list = listAC;
}
}
}[/ftf]

Xavi es un Technical Arquitect de Aplicaciones RIA basadas en la Plataforma Flash trabajando para Adobe en Londres. Especializado en aplicaciones colaborativas en tiempo real, e-learning y CMS (Content Management Systems) utiliza Flex, LCDS, BlazeDS, FMS y Java principalmente.

Sitio Web:http://www.code4net.com

7 Comentarios

  1. VictorR

    Hola, no solo sirve para no enviar lo que no quieres enviar, si no lo que no puedes… si tienes alguna propiedad que no es serializable es la manera de no enviar el objeto y que la aplicación no falle.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Acerca de Made In Flex

Made In Flex es una comunidad de desarrolladores de Apache Flex creada en 2006.

Apache Flex, anteriormente conocido como Adobe Flex, es un SDK (kit de desarrollo de software) para crear aplicaciones enriquecidas - multiplataforma basadas en Adobe Flash donado por Adobe a la fundación Apache in 2011 y promocionado a proyecto de primer nivel en Diciembre de 2012.

Actualmente estamos cambiando muchos aspectos del sitio web para ofrecer un sitio útil para toda la comunidad que tenga en cuenta las necesidades actuales.

Últimas Fotos

Instalador de Apache Flex

Entrar o Registrase