1

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

データグリッドでも、すべての値を一度にロードしないことがわかりました。

例えば

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

}

Class Doe{
 var lastName:String;
}

バックエンドですべての John を取得するように依頼すると、バックエンドは Doe を含むすべての John を取得します。フレックス側では、そのデータを受信したときに callresponder から結果イベントを発生させます。しかし、それでも doe を Johns にアクセスすることはできず、john の doe プロパティはまだ null です。2回目に聞いてみると、ドウのことなので、フロントエンドの方法で遅延読み込みのように見えます...

私は何を間違っていますか?

あいさつ

4

2 に答える 2

1

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

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

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

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

テストするために、基本的な例で Doe.lastName を Integer または他のオブジェクトに変更します。おそらく、もう一方の端で null が停止する可能性があります。それでも null の場合は、ActionScript と Java クラス (John & Doe) が正しく一致していないか、あいまいすぎます。

基本的なポイントは、データを受信したときに null になった場合、それはシリアル化に問題があることを意味します。BlazeDS は、ネットワークに書き込まれた内容を読み取る方法を理解できません。したがって、フィールド、プロパティ、および公開ゲッター/セッターを調整するか、オブジェクトをシリアル化するための独自のメソッドを作成してください。

このページでは、blazeds のシリアライゼーション (および自分でそれを処理する方法) について詳細に説明しています。

http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=serialize_data_2.html

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

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

-kg

于 2010-02-05T06:16:06.633 に答える
0

なぜそうなったのかはまだわかりませんが、フラットな dto を使用して解決しました。今は完全な MVC アーキテクチャを使用しています...

于 2010-01-15T12:54:15.927 に答える