6
votes

Comment excluez-vous la propriété d'objet dans GWT de la sérialisation?

Y a-t-il un moyen d'exclure les propriétés primitive et d'objet dans un objet sérialisable à partir de la sérialisation GWT?

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


0 commentaires

4 Réponses :


7
votes

Vous ne pouvez pas simplement le déclarer transitoire? XXX


0 commentaires

0
votes

Ajoutez transitoire sur le champ


0 commentaires

4
votes

Si vous voulez vraiment éviter d'utiliser le mot-clé transitoire , vous voudrez peut-être examiner les sérialiseurs de champ personnalisés . .

Sur mon dernier projet GWT, je les ai utilisés pour sérialiser des classes immuables, car GWT-RPC avait des limitations pour celles-ci.

C'est une fonctionnalité mal documentée et la meilleure explication que j'ai trouvée à l'époque n'était pas dans la documentation GWT, mais sur Cette excellente page wiki WOGWT . Vous pouvez également trouver quelques exemples dans GWT com.google.gwt.user.client.rpc.core package, puisque GWT utilise beaucoup de ceux-ci.

Veuillez noter que les fournisseurs personnalisés ont encore des problèmes, tels que numéro 2931 et numéro 3315 . En outre, je n'aime pas la façon dont ils sont définis: au lieu d'utiliser des méthodes statiques, il aurait été préférable de laisser les utilisateurs à mettre en place une interface personnalisée . Nous aurions gagné de type sécurité et héritage. Mais il s'agit d'un autre débat entier et le compilateur GWT pourrait effectivement mandater l'utilisation de ces méthodes statiques pour des raisons de performance (je n'ai pas examiné cela).

Néanmoins, cela fonctionne, et il est bon de les avoir dans des cas spécifiques.


0 commentaires