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>

 

 

發佈了23 篇原創文章 · 獲贊 0 · 訪問量 1931
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章