在数组对象的javascript中创建数组通过servlet中的request.setAttribute传入

时间:2013-05-04 15:36:08

标签: java javascript servlets

我正在尝试创建一个动态照片库,从mySQL中检索照片的位置。将位置存储到名为“private String location;”的照片对象中 将有一个ArrayList来保存所有不同的照片。之后,servlet将转发到jsp页面

request.setAttribute("list", list);
request.getRequestDispatcher("car.jsp").forward(request, response);

我有一个照片库的java脚本,它包含一个数组,[“path_to_image”,“optional_link”,“optional_linktarget”,“optional_textdescription”]。

imagearray: [
["path_to_image", "optional_link", "optional_linktarget", "optional_textdescription"],
["a.jpg", "www.a.com", "", ""]
],

我想从servlet传入的列表中的对象中检索位置,并将其转换为imagearray,以使我的照片库能够正常工作。

我是javascript的新手,我一直在寻找类似的示例或教程,但我找不到任何相关的。请帮帮我,非常感谢你的时间。

2 个答案:

答案 0 :(得分:0)

我从你的问题得到的是照片是一个类的对象,location是该类的成员变量。

request.setAttribute("list", list); request.getRequestDispatcher("car.jsp").forward(request, response);

这是listphoto对象或location成员变量的Arraylist。

你也在java中设置属性,你想通过javascript保存该列表。 那么在这种情况下,您可以检查JSON以保存您的java对象并转换为javascript对象。

你将获得类似于JSON的字符串 {imagearray:[{"path_to_image":"path_to_image","optional_link":"optional_link","optional_linktarget":"optional_linktarget","optional_textdescription"}]}

答案 1 :(得分:0)

您可以通过以下顺序简单地完成您想要做的事情:

  1. 从数据库中获取结果。
  2. 创建JSON对象。
  3. 将该对象设置为请求属性。
  4. 将JSON分配给JavaScript变量。
  5. 现在,让我们继续做那个清单。

    从数据库

    获取结果

    您应该有一个返回getPhotoList()的{​​{1}}类型的方法。我想您的List<Photo>类包含您要导出到JavaScript的字段。最后,您将Photo初始化。

    创建JSON对象

    您当然可以自己做,但更好的想法是使用专门的库将Java对象转换为JSON对象。例如,您可以使用Gson库,这是一种用于该类型转换的已知库。最后,通过调用List<Photo> photos,您将拥有一个JSON对象。

    将JSON设置为请求属性并执行转发

    这里的标准操作。

    String photosJSON = new Gson().toJson(photos);

    将JSON分配给JavaScript变量

    在您的JSP代码中,在request.setAttribute("photos", photosJSON); request.getRequestDispatcher("car.jsp").forward(request, response); 块中,包含以下行:

    <script>

    最后,您将拥有一个JS变量var photosJS = JSON.parse(${photos}); ,其中包含您从数据库中获得的列表。