2011-03-01 26 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

相关问题