【问题标题】:Pass Data into .jsp Javascript array将数据传递到 .jsp Javascript 数组
【发布时间】:2026-02-08 21:05:02
【问题描述】:

我将数据硬编码到 .jsp 文件中。我想要做的是用从服务器发送的数据填充一个 JavaScript 数组。

我试图从另一个 .jsp 页面发送数据,但我不知道如何将其转换为 JavaScript var 以便我能够在我的页面中使用它,我也已经开始使用 JSON 对象,但是在我继续之前,我只需要一些指导来了解最佳方法是什么。

即:在来自服务器的 .html 或 .jsp 文件上填充 JavaScipt 数组。然后该数组将用于 Google Maps API。

如果您有任何问题,请告诉我:

谢谢

【问题讨论】:

    标签: javascript json jsp google-maps-api-3


    【解决方案1】:

    如果是硬编码的,为什么不直接把它变成一个JS变量呢?

    var foo = [{
        "name1": "value1a",
        "name2": "value2a"
    },{
        "name1": "value1b",
        "name2": "value2b"
    }];
    

    或者,如果它在 Java 端进行了硬编码,并且您也打算在 JS 端使用它,则使用许多可用的 JSON 序列化器/解析器之一将 Java 对象转换为 JSON。在json.org 的底部,您可以找到 Java 中所有可用 JSON API 的概述。其中之一是Google Gson。例如,它能够将 List<SomeBean> 转换为 JSON 字符串,如下所示

    String jsonString = new Gson().toJson(someBeans);
    

    然后你可以让 JSP 打印它,就好像它是一个 JS 变量一样,假设它被存储为一个请求属性:

    var foo = ${jsonString};
    

    【讨论】:

    • +1,更清晰的答案。懒惰搜索,但是字符串化版本包含 </script> 的对象的表示会转义吗?
    • @Thrustmaster:是的,默认情况下 Gson 会 JS 转义 bean 属性。这也是可配置的。
    【解决方案2】:

    这很简单:

    1. 您必须确保您的 JSP 生成正确的 JavaScript 作为输出。
    2. 包含带有<script> 标记的JSP(即,需要通过URL 访问JSP;将该URL 放入src 属性中)。

    JSP 代码示例:

    var data = [<% ...generate array elements here... %>];
    

    这将允许您在之后执行的所有 JavaScript 中访问变量 data。在您的情况下,您会将脚本作为页面中的第一件事包含在内,以便其他所有脚本都可以使用它。

    巧妙的技巧:添加查询参数以指定变量名称:

    var <%=request.getParameter("name") %> = [<% ...generate array elements here... %>];
    

    并包含它

    <script src="...url...?name=data" type="text/javascript">
    

    【讨论】: