1


0

値オブジェクトの詳細なフレックスロードの問題(フロントエンドでの遅延ロード?)

フレックスフロントエンドでjavaバックエンドを使用しています。 そして、ラベル関数を使用したい場合、値オブジェクトなどの詳細なプロパティをロードしません、それはフレックス側で遅延ロードされているようですあそこ。

datagridでも、一度にすべての値をロードしないということもあります。

例えば

Class John{
 var name:String;
var lastName:Doe;

}

Class Doe{
 var lastName:String;
}

私は、バックエンドですべてのジョンを取得するように依頼します。バックエンドは、Doeを含むすべてのジョンを提供します。 今、フレックス側で、そのデータを受け取ったときにコールレスポンダーから結果イベントを発生させます。 しかし、それでもdoeをJohnsにアクセスすることはできません。johnのdoeプロパティはまだnullです。 2度目に尋ねると、雌雄についての話なので、フロントエンドでの遅延読み込みのように見えます…​

何が悪いの?

あいさつ

2 Answer


1


あなたの質問を完全に理解するのは難しいです。 しかし、私はこれらの方針に沿って何度も問題を抱えてきました。 だから私は一般的な問題を取得します。

BlazeDSで覚えておくべきことの1つは、ネットワークを介して送信されるクラスがシリアル化および非シリアル化されることです。 簡単に言えば、ネットワーク経由で読み書きされるのは各クラスのフィールド/プロパティのみであることを意味します。 Java側とFlex側の両方で、クラスの基本データ型に細心の注意を払う必要があります。 すべてのプロパティ/フィールドとパブリックgetter / setterが一致することを確認し、それらが明確であることを確認します。

「クリア」とは、どの変数をどこに固定するかがわからない場合にBlazeDSが混乱することです。

Doeクラスは文字列ではありませんが、文字列のみが含まれています。 したがって、ネットワーク経由で送信されると、文字列のように見えます。 このような場合、ブレイズドが混乱するのを見てきました。 ネットワーク上に2つの文字列が届くのを確認し、どちらがどこに行くのかわかりません。 ジョンには「Doe」と文字列が含まれていますが、BlazeDSが実際に見るのは、最終的には文字列と文字列です。

テストするために、基本的な例では、Doe.lastNameをIntegerまたはその他のオブジェクトに変更します。 可能性はありますが、反対側ではnullになることはありません。 それでもnullの場合は、ActionScriptクラスとJavaクラス(John&Doe)が適切に一致しないか、あいまいすぎます。

基本的なポイントは次のとおりです。データを受け取ったときに問題が発生した場合、シリアル化に問題があることを意味します。 BlazeDSは、ネットワークに書き込まれた内容を読み取る方法を把握できません。 したがって、フィールド、プロパティ、およびパブリックgetter / setterを調整してください。 または、オブジェクトをシリアル化する独自のメソッドを記述します。

このページでは、blazedsのシリアル化(および独自の処理方法)について詳しく説明します。

これを完全に理解すると、この種のエラーははるかに少なくなりました。

それが役立つことを願っています、

-kg


0


OK