ActionScript Number(NaN) —> java(null) NaN —> null

blazeds源码:

http://opensource.adobe.com/svn//opensource/blazeds/tags/4.0.0/modules/core/src/

 

http://flexblog.faratasystems.com/tag/blazeds

解决方法1,修改blazeds中的类NumberDecoder.java 和类NativeDecoder.java

附件中为已修改好的 Blazeds3.2d的包。

 

在Maven 中使用(spring-flex)框架,自动下载的 blazeds-core-3.2.0.3978.jar 同样也需要替换这两个类,附件中也提供了修改好的jar包,直接替换相应的文件夹中的jar包即可。

 

 

解决方法2:使用自定义类型编码器

package test.util.blazeds3;

import flex.messaging.io.amf.translator.ASTranslator;

public class NumberNaN2NullTypeMarshaller extends ASTranslator {

	@Override
	@SuppressWarnings("unchecked")
	public Object convert(Object source, Class desiredClass) {
		if (Number.class.isAssignableFrom(desiredClass)) {
			double doubleValue = ((Number) source).doubleValue();
			if (Double.isNaN(doubleValue)) {
				return null;
			}
		}
		return super.convert(source, desiredClass);
	}
}

 

修改配置文件services-config.xml

<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
    <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
    <properties>
        <serialization>
            <type-marshaller>test.util.blazeds3.NumberNaN2NullTypeMarshaller</type-marshaller>
        </serialization>
    </properties>
</channel-definition>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值