Flex Null Integer

时间:2010-03-08 08:58:09

标签: flex null integer blazeds amf

我通过AMF(BlazeDS)将数据从Java传递到Flex

在java方面,对象有Integer字段。所以它可以为null。

在Flex中,对象是int。因此将null值反序列化为0.

这不是我想要的,我想看看它是0还是null。

Flex是否有类似(Java中的Integer)的包装器? 感谢

4 个答案:

答案 0 :(得分:4)

据我所知,没有这样的包装。如果构造函数的参数为​​NaN,则可以编写一个将int分配给内部null的文件

答案 1 :(得分:3)

我们通过创建一个覆盖setValue和getValue的BeanProxy类来解决这个问题。在那里,如果值是Number并且为null,则返回NaN到flex侧,如果它是Double和NaN,我们将返回null到Java端。完成工作:

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

答案 2 :(得分:1)

Amarghosh有正确的答案,但是当你继续完成你的项目时,你会发现当你应用“一切都是字符串”规则时,amf世界的生活会变得如此简单。从长远来看,这只是一个可能有很大帮助的建议。

祝你好运, 杰里米

答案 3 :(得分:0)

正如Amarghosh回答的那样,没有这样的包装。作为一种解决方法,我们检查-1的int值,它等于我们域中未分配的int值。