我通过AMF(BlazeDS)将数据从Java传递到Flex
在java方面,对象有Integer字段。所以它可以为null。
在Flex中,对象是int。因此将null值反序列化为0.
这不是我想要的,我想看看它是0还是null。
Flex是否有类似(Java中的Integer)的包装器? 感谢
答案 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值。