2010-11-28 10 views
6

¿Hay alguna forma de excluir las propiedades primitivas y de objeto dentro del objeto serializable desde la serialización GWT?¿Cómo se excluye la propiedad del objeto en GWT de la serialización?

public class Provider implements Serializable{ 
    public Provider() { 
    } 

    //Id like to exclude this property: 
     private String password; 
    // 

    private String address1; 
    private String address2; 
    private String companyName; 
    private String phone; 
} 

Respuesta

10

que estaba esperando algo así como anotación especial

Creo que lo que busca es @GwtTransient

@GwtTransient, una anotación que dice GWT RPC para tratar un campo tan si fue marcado con la palabra clave transitoria Java , aunque no lo es.

Esta anotación significa lo mismo que la palabra clave transient, pero es ignorado por todos serialización sistemas distintos de GWT de. Por lo general, la palabra clave transient se debe utilizar en la preferencia de esta anotación. Sin embargo, para los tipos utilizados con múltiples sistemas de serialización , puede ser útil.

Referencia: @GwtTransient

6

¿No puedes declararlo transitorio?

transient private String password; 
0

añadir transitoria al campo

4

Si realmente desea evitar el uso del transitoria de palabras clave, es posible que desee ver en Serializadores campo personalizado.

En mi último proyecto GWT, los utilicé para serializar clases inmutables, ya que GWT-RPC tenía limitaciones para eso.

Es una característica mal documentada, y la mejor explicación que encontré en ese momento no estaba en la documentación de GWT, sino en this great wogwt wiki page. También puede encontrar algunos ejemplos en el paquete com.google.gwt.user.client.rpc.core de GWT, ya que GWT usa muchos de esos.

Tenga en cuenta que CustomFieldSerializers todavía tiene algunos problemas, como issue 2931 y issue 3315. Además, no me gusta la forma en que están definidos: en lugar de utilizar métodos estáticos, hubiera sido mejor permitirles a los usuarios implementar una interfaz CustomFieldSerializer<T>. Habríamos ganado tipo seguridad y herencia. Pero este es un debate completamente diferente, y el compilador de GWT en realidad podría ordenar el uso de esos métodos estáticos por razones de rendimiento (no lo he investigado).

Aún así, funciona, y es bueno tenerlos en casos específicos.

Cuestiones relacionadas