我通过在属性中设置它并将其转发到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
如果这是重复的问题,请原谅我。
答案 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}');