我需要为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之前调用它.
