2

AMF(BlazeDS)によってJavaからFlexにデータを取得します

Java側では、オブジェクトには整数フィールドがあります。したがって、nullになる可能性があります。

Flex側では、オブジェクトはintです。したがって、null値は0として逆シリアル化されます。

これは私が望むものではありません。0かnullかを確認したいと思います。

Flex用の(Javaの整数)のようなラッパーはありますか?ありがとう

4

4 に答える 4

4

私の知る限り、そのようなラッパーはありません。コンストラクターへの引数がである場合、NaN内部に割り当てるものを書くことができますintnull

于 2010-03-08T09:38:56.180 に答える
3

setValueとgetValueをオーバーライドするBeanProxyクラスを作成することでこれを解決しました。そこでは、値がNumberでnullの場合はNaNをフレックス側に返し、DoubleでNaNの場合はJava側にnullを返します。完了した仕事:

@オーバーライド
public void setValue(Object instance、String propertyName、Object value){
    if((value instanceof Double)){
        Double doubleValue =(Double)値;
        if(doubleValue!= null && doubleValue.isNaN()){
            super.setValue(instance、propertyName、null);
        }
    }そうしないと{
          super.setValue(instance、propertyName、value);
        }
}

@オーバーライド
public Object getValue(Object obj、String propertyName){
    最終クラスclassType=super.getType(obj、propertyName);
    if(isNumber(classType)&& super.getValue(obj、propertyName)== null){
        Double.NaNを返します。
    }
    super.getValue(obj、propertyName);を返します。
}
于 2010-10-01T14:08:49.833 に答える
1

Amarghoshには正解がありますが、プロジェクトを続行すると、「すべてが文字列である」というルールを適用すると、amfの世界での生活が非常に楽になることがわかります。長期的には大いに役立つかもしれない単なる提案。

幸運を祈ります、ジェレミー

于 2010-03-08T18:31:21.187 に答える
0

Amarghoshが答えたように、そのようなラッパーはありません。回避策として、ドメイン内の割り当てられていないint値と等しい-1のint値を確認します。

于 2010-03-08T12:23:18.490 に答える