如何将arraylist从servlet传递给javascript?

时间:2017-06-21 13:56:09

标签: javascript java jsp servlets arraylist

我通过在属性中设置它并将其转发到jsp来传递来自servlet的arraylist

的Servlet

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");

的index.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

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

2 个答案:

答案 0 :(得分:1)

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

所以,这可能有效:

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

答案 1 :(得分:0)

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

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

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