我需要为google API表提供数据…所以我将它从servlet发送到JSP 但是如何在“googles”javascript中访问这些数据? 我将提供另一个JS的样本 – 非常简单 – 只是为了让我学习如何制作主题 sc
但是如何在“googles”javascript中访问这些数据?
我将提供另一个JS的样本 – 非常简单 – 只是为了让我学习如何制作主题
<script> function showTable() { <% Object obj = session.getAttribute("list"); List<String> list = new ArrayList<String>(); int size = 0; if (obj != null) { list = (ArrayList<String>) obj; size = (Integer) session.getAttribute("size"); } for (int i = 0 ; i < size ; i++) { String value = list.get(i); %> alert('<%= i %> = <%= value %> '); <% } %> } </script>
它必须打印出给定列表的元素……但是现在它只是一个内部有警报的大潦草……为了重构它?我不喜欢在JSP中使用很多java,因为servlet应放在它的位置
编辑:只是为了总结 – 我更喜欢这里的“正常”JS for循环…通常我更喜欢最小化java代码,并最大化JS
在预处理servlet的doGet()中将其转换为 JSON.你可以使用其他 Google Gson.假设你有一个List< Person>:List<Person> persons = createItSomehow(); String personsJson = new Gson().toJson(persons); request.setAttribute("personsJson", personsJson); request.getRequestDispatcher("/WEB-INF/persons.jsp").forward(request, response);
(请注意,我将其设为请求属性而不是会话属性,您可以自由更改它,但我相信它不一定需要是会话属性,因为它不代表会话范围的数据)
将它分配给JSP中的JS变量,如下所示:
<script> var persons = ${personsJson}; // ... </script>
这样它就可以作为一个完整的JS对象使用.您可以将其直接提供给Google API.
现在调用servlet的URL而不是JSP.例如,当它映射到/ persons的URL模式时,在http://localhost:8080/contextname/persons之前调用它.