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

How can you access an array or a list saved in request scope using javascript?

本文关键字:范围内 数组 列表 请求 存在 何使用 javascript 访问 保存      更新时间:2023-09-26

在我的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 吗?

你可以使用<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>

上面的代码尚未测试。

你可以像这样将数组分配给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()会有所帮助。