2010-11-28 6 views
6

GWTシリアル化からSerializableオブジェクト内のプリミティブプロパティとオブジェクトプロパティを除外する方法はありますか?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; 
} 

答えて

10

の場合は、Javaトランジェント というキーワードでマークされています(実際にはそうではありません)。

この注釈はtransientキーワード、 と同じもの を意味しますが、GWTの以外のすべてのシリアライゼーション システムによって無視されます。通常、 transientキーワードは で使用する必要があります。 ただし、複数の シリアライゼーションシステムで使用されるタイプの場合は、 が便利です。

参考:@GwtTransient

6

あなたはそれを一時的に宣言できませんか?

transient private String password; 
0

あなたが本当に過渡キーワードを使用しないようにしたい場合は、フィールド

4

に過渡追加し、あなたはカスタムフィールドシリアライザに見たいと思うかもしれません。

私の最後のGWTプロジェクトでは、GWT-RPCに制限があるため、それらを使用して不変クラスをシリアル化しています。

これは文書化されていない機能であり、当時の私が見つけた最良の説明はGWTのドキュメントではなく、this great wogwt wiki pageでした。また、GWTの多くのものを使用しているので、GWTのcom.google.gwt.user.client.rpc.coreパッケージにいくつかの例があります。

CustomFieldSerializersにはまだissue 2931issue 3315などの問題があります。また、静的メソッドを使用する代わりに、ユーザーにCustomFieldSerializer<T>インターフェイスを実装させるほうがよいでしょう。タイプの安全性と継承を得ることができました。しかし、これはまったく別の議論であり、GWTコンパイラはパフォーマンス上の理由から静的メソッドの使用を強制することがあります(私はそれについて検討していません)。

まだ動作しており、特定のケースで使用することをお勧めします。私は何を探していること@GwtTransient

@GwtTransient、 のようにフィールドを治療するためのGWT RPCを伝える注釈だと思う私は 特別な注釈

のようなものを期待していた

関連する問題