如何使用javascript访问保存在请求范围内的数组或列表?

时间:2014-12-12 17:40:22

标签: java javascript arrays servlets

在我的servlet中:

String[] array = {"apple", "ball", "cat"};
req.setAttribute("myArray", array);

在javascript中:

var x = '${myArray}';
alert(x.length);              //prints 28
alert('${myArray[0]}');       //prints apple
alert(x)                      //prints [Ljava.lang.String;@267c3c78

如何在不使用json的情况下获取数组对象,以便循环使用它?是我唯一的选择json和xml?

2 个答案:

答案 0 :(得分:2)

您可以使用<c:forEach>但由于Java在服务器端运行,因此它只会帮助您生成可用于JavaScript的纯文本。通过了解这一点,您可以创建一个JavaScript字符串数组,如下所示:

<script type="text/javascript">
    var myJavaScriptArray = [
        <c:forEach items="${myArray}" var="elem" varStatus="currentStatus">
            "${elem}"
             <c:if test="${not currentStatus.last}">
                 ,
             </c:if>
        </c:forEach>
        ];
</script>

上面的代码尚未测试。

答案 1 :(得分:2)

您可以像这样

将数组分配给javascript变量
<script>
var x = [
  <c:forEach var="item" items="${myArray}" varStatus="loop">
    "${item}"
    <c:if test="${!loop.last}">,</c:if>
  </c:forEach>
]
<script>

或者如果你想避免它,那么从服务器端传递javascript数组的正确表示。 Arrays.toString()会有所帮助。