Как исключить свойство объекта в GWT из сериализации? - PullRequest
6 голосов
/ 28 ноября 2010

Есть ли способ исключить свойства примитивов и объектов внутри сериализуемого объекта из сериализации 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;  
}

Ответы [ 4 ]

10 голосов
/ 04 декабря 2010

Я надеялся на что-то вроде специальной аннотации

Я думаю, что вы ищете, это @GwtTransient

@GwtTransient, аннотация, котораяговорит GWT RPC обрабатывать поле, как если бы оно было помечено ключевым словом Java transient, даже если это не так.

Эта аннотация означает то же самое, что и ключевое слово transient, но оно игнорируется всеми системами сериализациикроме GWT.Обычно ключевое слово transient следует использовать в предпочтении к этой аннотации.Однако для типов, используемых с несколькими системами сериализации, это может быть полезно.

Ссылка: @ GwtTransient

6 голосов
/ 28 ноября 2010

Разве вы не можете объявить это переходным процессом?

transient private String password;
4 голосов
/ 28 ноября 2010

Если вы действительно хотите избежать использования ключевого слова transient , вам может понадобиться Сериализаторы пользовательских полей .

В моем последнем проекте GWT я использовалим сериализовать неизменяемые классы, так как GWT-RPC имел ограничения для них.

Это плохо документированная функция, и лучшее объяснение, которое я нашел в то время, было не в документации GWT, а на это здоровоwogwt wiki page .Вы также можете найти некоторые примеры в пакете GWT com.google.gwt.user.client.rpc.core , поскольку GWT использует многие из них.

Обратите внимание, что в CustomFieldSerializer все еще есть некоторыепроблемы, такие как выпуск 2931 и выпуск 3315 .Кроме того, мне не нравится, как они определяются: вместо использования статических методов было бы лучше позволить пользователям реализовать интерфейс CustomFieldSerializer<T>.Мы бы получили безопасность типов и наследство.Но это совсем другой спор, и компилятор GWT может фактически разрешить использование этих статических методов по соображениям производительности (я не рассматривал это).

Тем не менее, это работает, и хорошо иметьих в особых случаях.

0 голосов
/ 28 ноября 2010

добавить переходный процесс в поле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...