2011-03-01 28 views
0

嗨我想將一個對象從一個servlet傳遞給YUI javascript代碼。下面是該對象的類聲明,我願意傳球:通過Servlet傳遞一個對象並在YUI中讀取它

@XmlRootElement 
class Favourite implements Serializable { 
List<String> name = new ArrayList<String>(); 
List<String> host = new ArrayList<String>(); 
List<Integer> port = new ArrayList<Integer>(); 
} 

這是怎麼了試圖通過servlet來發送。

response.setContentType("application/x-java-serialized-object"); 
OutputStream os = response.getOutputStream(); 
ObjectOutputStream out = new ObjectOutputStream(os); 
Favourite data = new Favourite(); 
// some code to manipulate the "data" instance 
out.writeObject(data); 

我很困惑我將如何閱讀YUI中的這個對象。請提出一條出路。

回答

1

我非常懷疑你可以得到YUI來反序列化Java序列化字節流。我想使用JSON。提供將您的Favorite實例序列化爲JSON字符串的方法,並將其發送爲響應(使用內容類型「application/json」)。您可以找到Java的多個JSON編碼器(序列化器/字符串)(包括上面的鏈接)。 YUI提供JSON deserialization

使用JSON或XML作爲您的線上格式是迄今爲止在Web應用程序中客戶端和服務器之間發送數據(而不是標記)的最流行方式。根據我的經驗,JSON是超車XML一點,部分原因是因爲它只是很容易使用,但XML是那裏第一次(事實上,XML是在「AJAX」   — 的X A同步Ĵ avascript 一個 nd X ML)。

+0

如果我沒有錯,我認爲有可能將Java序列化對象傳遞給Jquery並反序列化它,也建議我使用JQuery或YUI。 – 2011-03-01 13:11:42

+0

@aditya:沒有冒犯,但我敢肯定你錯了。 jQuery中肯定沒有Java反序列化支持,我從來沒有聽說過它的插件。 (默認)Java序列化過程產生的二進制數據不適合傳輸給客戶端JavaScript,然後通過客戶端JavaScript進行反序列化。它可能是*可能*,但它不是標準的做法。重新YUI與jQuery:這完全取決於你(你有大約十幾個其他選擇)。 jQuery可能在採用方面具有優勢,並且獨立於任何一家大公司(儘管與微軟有聯繫)。 – 2011-03-01 13:15:16

+0

感謝您的幫助,我可以組成一個JSON對象並在YUI中解析它。 – 2011-03-07 12:41:37

0

YUI將無法讀取Java序列化對象(二進制數據,具有Java特定格式)。您應該使用JavaSCript(如XML或JSON)可讀的開放格式來傳輸對象。

+0

請幫助我,我是YUI的新手,對此知之甚少。如果我以XML或JSON格式傳輸對象,我將如何閱讀它。 – 2011-03-01 13:11:04

+0

閱讀http://developer.yahoo.com/yui/3/json/的JSON和YUI。如果您在進行AJAX並返回XML,則XML DOM樹將在XMLHttpRequest的responseXML屬性中可用。 – 2011-03-01 13:31:20

+1

假設你正在做一個AJAX調用並返回一個JSON數組,你會這樣做http://jsfiddle.net/rbYKj/(使用yui3) – gmedina 2011-03-02 05:38:36

相關問題