Как заставить BlazeDS игнорировать свойства? - PullRequest
4 голосов
/ 10 февраля 2011

У меня есть класс Java, который имеет одно поле с геттером и сеттером, а вторая пара - с геттером и сеттером, которые получают доступ к этому полю другим способом:

public class NullAbleId {
   private static final int NULL_ID = -1;
   private int internalId;

   getter & setter for internalId

   public  Integer getId() {
     if(this.internalId == NULL_ID) {
       return null;      
     } else {
       return Integer.valueOf(internalId);
     }
    }

    public void setId(Integer id) {
      if (id == null) {
        this.internalId = NULL_ID;
      } else {
        this.internalId = id.intValue();
      }
    }

}

(причина этой конструкции в том, что я хочу построить способ обработки Nullable Intergers )

На стороне клиента Flash / Flex у меня есть класс с двумя свойствами: id и internalId (свойства id предназначены только для тестирования, в конце они должны возвращать значение internalId)

Швы BlazeDS для передачи обоих значений: id и internalId, потому что оба имеют полную пару установщиков геттеров. Я хочу, чтобы Blaze не передавал id, должен передаваться только internalId. Но я понятия не имею, как мне это настроить.

Ответы [ 3 ]

3 голосов
/ 10 февраля 2011

Все правила для сериализации BlazeDS приведены здесь:

http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=serialize_data_3.html

Вот цитата: «Поля, которые являются статическими, временными или непубличными, а также свойства бинов, которыенепубличные или статические, исключены. "

Так что если вы сможете сделать ваше свойство id соответствующим этим критериям, оно будет исключено.Другой вариант - создать собственный сериализатор, который явно не включает ваше свойство id.

Всего наилучшего,

~ harris

1 голос
/ 11 февраля 2011

Помимо переходного процесса / маршаллера вы можете реализовать интерфейс Externalizable и создать свою собственную сериализацию.

См. правила сериализации

0 голосов
/ 11 марта 2014

Может быть, он немного староват, но в некоторых это может помочь: есть хороший билет о , исключая свойства из Java во Flex через BlazeDS

РЕДАКТИРОВАТЬ: лучшее решение, это использовать аннотацию @AmfIgnore (или @AmfIgnoreField, если ваша сериализация находится прямо на полях), присутствующая в spring-flex-core.jar (я использовал 1.5.2 -РЕЛИЗ)

...