Flex Null Integer - PullRequest
       54

Flex Null Integer

2 голосов
/ 08 марта 2010

Я беру данные из Java во Flex по AMF (BlazeDS)

В стороне объекта Java есть поле Integer. Так что это может быть ноль.

В Flex боковой объект - int. Таким образом, нулевые значения десериализуются как 0.

Это не то, что я хочу, я хочу посмотреть, 0 или ноль.

Существует ли обертка (целочисленная в Java) для Flex? Спасибо

Ответы [ 4 ]

4 голосов
/ 08 марта 2010

Насколько я могу судить, такой оболочки нет. Вы можете написать тот, который присваивает NaN внутреннему int, если аргумент конструктора равен null

3 голосов
/ 01 октября 2010

Мы решили эту проблему, создав класс BeanProxy, который переопределяет setValue и getValue. Там мы возвращаем NaN на сторону flex, если значением является Number и null, и мы возвращаем null на сторону Java, если это Double и NaN. Работа сделана:

@Override
public void setValue(Object instance, String propertyName, Object value) {
    if ((value instanceof Double)) {
        Double doubleValue = (Double) value;
        if (doubleValue != null && doubleValue.isNaN()) {
            super.setValue(instance, propertyName, null);
        }
    }else{
          super.setValue(instance, propertyName, value);
        }
}

@Override
public Object getValue(Object obj, String propertyName) {
    final Class classType = super.getType(obj, propertyName);
    if (isNumber(classType) && super.getValue(obj, propertyName) == null) {
        return Double.NaN;
    }
    return super.getValue(obj, propertyName);
}
1 голос
/ 08 марта 2010

У Амаргоша правильный ответ, но, продолжая свой проект, вы обнаружите, что жизнь в мире amf становится намного проще, если вы примените правило «все - строка». Просто предложение, которое может очень помочь в долгосрочной перспективе.

Удачи, Джереми

0 голосов
/ 08 марта 2010

Как ответил Амаргхош, такой обертки нет. В качестве обходного пути мы проверяем значение int для -1, которое равно неназначенному значению int в нашем домене.

...