代码之家  ›  专栏  ›  技术社区  ›  Niru

如何将JSON对象从JSP传递到Javascript?

  •  0
  • Niru  · 技术社区  · 6 年前

    我有一个myInitState变量,它在控制器中初始化,然后传递给jsp视图。

    <script>
        myInitFunction({ 
            myInitState: '${myInitState}',
            componentName: 'myCompName',
            divId: 'divId'        
        });
    </script>
    

    但是通过使用 '${myInitState}' myInitFunction ?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Paul McLoughlin    6 年前

    为了利用字符串插值,您需要使用backticks

    `${myInitState}`

    然后需要使用 JSON.parse(someString)

        2
  •  0
  •   Niru    6 年前

    由于误解,我的问题中遗漏了几件事: -myInitState是 <String,Object> -映射的值可能已经转义为JSON blob。

    在本例中,流是从服务器到客户端的,因此为了正确地将映射转换为JSON blob,我需要在JSP中执行以下操作:

    <script>
        var jsonBlob = {
            <c:forEach items="${myInitState}" var="state" varStatus="loop">
                "${state.key}": ${state.value} ${not loop.last ? ',' : ''}
            </c:forEach>
        };
    </script>
    

    然而,一个更好的方法,也就是我所说的,就是在构造myInitState的控制器本身中进行转换。