java - 将多个值从 Servlet 传递到 JSP,但我在 JSP 中只得到 1 个值

标签 java jsp servlets

我试图将纬度和经度值从 Servlet 传递到 JSP,但在 JSP 中只得到 1 个值

Servlet 页面

for(int i=0;i<json.length();i++)
{
    String lat=json.getJSONObject(i).get("lat").toString();
    String lon=json.getJSONObject(i).get("lon").toString();
    lats[i]=lat;
    lons[i]=lon;
    request.setAttribute("lats", lats[i]);
    request.setAttribute("lons", lons[i]);

    System.out.println(lats[i]+","+lons[i]);
}

JSP页面

var len=<%=request.getAttribute("len")%>;
lats[0]=<%=request.getAttribute("lats")%>;
<% String[] lats=(String[]) request.getAttribute("lats");%> 
<% String[] lons=(String[]) request.getAttribute("lons");%>

for(i=0;i<len;i++)
{    
    var locations =[
                       ['<%=request.getAttribute("cid")%>',lats,lon]    
                   ];   
    alert(locations);  
}

我哪里出错了?

最佳答案

按照目前的编写,您将在每次迭代时覆盖 2 个请求属性(latslon)。请求属性不是一个神奇的容器,而是最后在 addAttribute 中使用的简单对象。因此,在 JSP 中,您稍后只能获取最后一个 lats 和 lon 的值。

假设您的代码中有 latslon 以及数组,您应该编写:

for(int i=0;i<json.length();i++)
{
    String lat=json.getJSONObject(i).get("lat").toString();
    String lon=json.getJSONObject(i).get("lon").toString();
    lats[i]=lat;
    lons[i]=lon;

    System.out.println(lats[i]+","+lons[i]);
}

request.setAttribute("lats", lats);
request.setAttribute("lons", lons);

将数组放入请求属性中。

然后在JSP中${lat}${lon}将引用数组,你可以使用${lat[O]} ${lat[i]},为最后一个表达式提供 i 是包含小于数组大小的整数值的作用域变量。

关于java - 将多个值从 Servlet 传递到 JSP,但我在 JSP 中只得到 1 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27164881/

相关文章:

java - 使用java通过ftp连接后运行Unix命令

javascript - 在 cq5 组件中设置属性

java - java(jsp、servlet、mysql)中图像保存、编辑、删除到特定文件夹并将路径和其他数据保存在数据库中

java - 从另一个 servlet 调用 servlet

java - 如何在 Struts Action 中获取容器管理的数据源对象

java - 我无法让子字符串正常工作

java - 如何使用递归在链表中成对交换节点?

java - Random 中空 for(;;) 循环的目的是什么

javascript - 从 Spring MVC 列表属性填充 HTML 有序列表

JSP 表达式语言不起作用