【问题标题】:How to pass arraylist from servlet to javascript?如何将arraylist从servlet传递给javascript?
【发布时间】:2017-11-24 11:33:07
【问题描述】:

我从 servlet 传递一个数组列表,方法是在属性中设置它并将其转发到 jsp

小服务程序:

ArrayList <String> mylist = new ArrayList <String>();

mylist.add("Superman");

mylist.add("batman");

mylist.add("flash");

request.setAttribute("mylist", mylist);

request.getRequestDispatcher("Welcome.jsp").forward(request, response);
response.sendRedirect("Index.jsp");

索引.jsp

function doPopulateList(obj)
    {

     alert("HELLO"+obj.id +obj.name+obj.value);
     var select = document.getElementsByClassName("my_dropdown1"); 
     alert("all good");
     //var list = new Array();
      var list = '${mylist}'; 
      //var options = ["1", "2", "3", "4", "5"]; 

     alert("All good till arraylist");
     for(var i=0;i<list.length;i++)
         {

         alert(list[i]);

         }

当我尝试将 arraylist 值放入警报框中时,我会收到类似

的警报
[
S
U

我希望警报像

Superman
batman
flash

如果这是重复的问题,请原谅。

【问题讨论】:

  • 哎呀,放错地方了。

标签: javascript java jsp servlets arraylist


【解决方案1】:

首先,你需要在servlet不向客户端发送响应之前,遍历服务器端列表并将每个元素添加到JS数组中。

所以,这可能有效:

<script>
   var list = [
      <c:forEach items="${mylist}" var="hero">
        '<c:out value="${hero}" />',  
      </c:forEach>
   ];
   console.log(list);
</script>

【讨论】:

    【解决方案2】:

    到达客户端的不是数组而是字符串。因此,如果您循环,您将循环字符串的单个字符。

    您需要将字符串转换为 JSON-Object 以便能够循环列表项。

    var list = JSON.parse('${mylist}');
    

    【讨论】:

    • 如何遍历JSON对象?很抱歉问这个问题,但我不知道 JSON。
    • 抱歉,拖了这么久。我远离电脑。你实际得到的 一个数组。我把它命名为对象。只需在 javascript 中执行常规的 for 循环即可。
    猜你喜欢
    • 2014-05-02
    • 1970-01-01
    • 2017-07-28
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    相关资源
    最近更新 更多