簡體   English   中英

深度靈活加載值對象的問題(前端的延遲加載?)

[英]Problems with indepth flex loading of value objects (Lazy loading at the front-end?)

我正在使用帶有Flex前端的Java后端。 當我想使用labelfunction時,它不會加載諸如value對象之類的深入屬性,就像是在flex端延遲加載一樣,我確定它不是從后端來的,因為我已經檢查了它在那邊。

我在datagrid中也得到了它,它不會一次加載所有值。

例如

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

}

Class Doe{
 var lastName:String;
}

我要求后端得到所有約翰的,后端給我所有包含母鹿的約翰的。 現在在flex端,當我接收到數據時,我會從callresponder中觸發結果事件。 但是仍然不能讓美國能源部加入約翰斯,約翰的doe屬性仍然為空。 當我第二次詢問時,現在是關於母鹿的,所以看起來像是在以前端方式延遲加載...

我究竟做錯了什么?

招呼

完全理解您的問題很棘手。 但是,我在這些方面遇到了很多很多次的問題。 所以我得到了普遍的問題。

使用BlazeDS時要記住的一件事是,通過網絡發送的類被序列化和反序列化。 簡而言之,意思是通過網絡編寫和讀取的唯一內容是每個類的字段/屬性。 您必須密切注意Java端和Flex端的類中的基本數據類型。 確保所有屬性/字段與公共獲取者/設置者匹配,並確保它們清晰。

我所說的“明確”是,當BlazeDS無法弄清楚哪個變量應該放在哪里時,就會感到困惑。

盡管您的Doe類不是String,但是它僅包含一個字符串。 因此,當它通過網絡發送時,看起來就像一個字符串。 在這種情況下,我已經看到這些火焰變得困惑。 它看到兩個字符串從網絡中傳出,並且無法弄清楚哪個去了哪里。 對您來說,John包含“ Doe”和一個字符串,但最終BlazeDS真正看到的只是一個字符串和一個字符串。

為了測試,在您的基本示例中,將Doe.lastName更改為Integer或其他對象。 很有可能,它將在另一端停止為空。 如果仍然為null,則您的ActionScript和Java類(John和Doe)不正確匹配,或者它們太含糊。

基本要點是:當接收數據時出現空值時,這意味着序列化有問題。 BlazeDS無法弄清楚如何讀取寫入網絡的內容。 因此,要么調整字段,屬性和公共獲取器/設置器……,要么編寫自己的序列化對象的方法。

本頁詳細描述了炫耀的序列化(以及如何自行處理):

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

一旦我完全理解了這一點,我得到的這類錯誤就會少得多。

希望能有所幫助,

-公斤

好的,我仍然不知道為什么會這樣做,但是我已經通過使用平面dto解決了它,現在我正在使用完整的MVC架構...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM