2011-02-10 7 views
4

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

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

} 

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

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

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

ответ

1

Кроме транзиторного/ИАСА можно реализовать Externalizable интерфейса и создать свои собственные сериализации.

См serialization rules

+0

спасибо: Я попытался реализовать внешний интерфейс, но это вызывает следующую проблему : http://stackoverflow.com/questions/4968457/blazeds-custom-serialization-causes-rangee rror – Ralph

3

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

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

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

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

Все самое лучшего,

~ Харрис

0

Это может быть немного староват, но это может помочь некоторым: есть хороший билет около excluding properties from Java to Flex via BlazeDS

EDIT: лучше soluce, это использовать @AmfIgnore (или если ваш сериализация непосредственно на полях) аннотация, присутствующая в spring-flex-core.jar (я использовал 1.5.2-RELEASE)

Смежные вопросы