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>
本文提供两种解决BlazeDS框架中Number类NaN问题的方法:一是修改BlazeDS源码中的NumberDecoder.java和NativeDecoder.java两个类;二是通过自定义类型编码器,并在配置文件services-config.xml中进行相应设置。
4194

被折叠的 条评论
为什么被折叠?



