2011-02-10 8 views
1

私はJavaサーバーの部分とFlash/Flexクライアントで構成されたアプリケーションを持っており、どちらもBlazeDS経由で通信します。両方のサイトで同じ型付きオブジェクトを使用するために、私はGAS3コードジェネレータ(flex-mojosで使用)を使用します。Java-Flexリモートアプリケーションでnull可能なIntegerを処理するベストプラクティス?

しかし今、null許容整数を処理するという問題に直面しています。問題は、オプションのオブジェクトBを参照する外部キーIDを含むオブジェクト(A)があることです。 - しかし、私はIDだけをフレックスクライアントに送信します。それは簡単であるJavaサイトで

class A { 
    private Integer bFk; 
    getter/setter 
} 

しかし、フレックスクライアント側で、BFKはint型です。 Flash intはnullにはできません。したがって、 リモートメカニズムは、Javaのヌル整数を0に変換します。サーバーに送信した後、Java側でもJava bFkは0になります。 - 0とnullを分ける必要があるので、これは受け入れられません。

私の最初のworkroundはJava側でIntegerではなく、ラッパー/アダプタのように動作し、-1をnullにする内部intをラップする新しいClass NullAbleIDを使用しています(-1実際のIDは負であるため、nullになります)。しかし、これを使用すると、このNullAbleIDクラスによってすべてのJava Integer IDを置き換える必要があることを意味します。

私はこの問題を抱える最初の人ではないと信じているので、一般的な質問のよりよい解決をお願いします。Java - Flexリモーティングシナリオでnullable Integerを表現する方法は?

は(私が質問を認識しています:。flex-null-integerが、それは同じ問題であったとしても、問題は別の主題についてです)

答えて

1

ひとつのアイデアは、フラグ値を使用することです。 -1やNaNのようなもの。

このバグを見てください:https://bugs.adobe.com/jira/browse/BLZ-74 - これは言語の制限とみなされ、NaNを割り当てることで修正されることはありません。

自分でNaNのアプローチを使用する場合は、http://flexblog.faratasystems.com/2010/01/07/how-to-keep-numeric-null-value-from-turning-into-zeros-in-blazedsからFarataのブログを確認してください。彼らはAS-> Java変換について話していますが、コメントを見れば、Java-> ASの解決策が見つかるでしょう

私はすべてのIntegersをラッパークラスで修正する必要はありません。 - それも解決策です。

+0

ありがとう:NaNはJava Integerに割り当てることができないため、NaNは機能しません。また、Blaze Source(ブログへのリンク)を変更することも、私の意見ではありません。しかし、とにかくありがとう、それは他の人のために働くかもしれない。 – Ralph

関連する問題