【问题标题】:How to convert jstl/JSP variables to javascript variables? [duplicate]如何将 jstl/JSP 变量转换为 javascript 变量? [复制]
【发布时间】:2023-12-29 00:08:02
【问题描述】:

是否可以将 jstl/JSP 变量转换为 javascript 变量?

这里是 JSTL:

 <c:forEach var="responseString" items = "${responseString}">
     <c:out value="${responseString.response}" />  
 </c:forEach>

我想将 ${responseString.response} 中的值转移到 javascript var response

这里是javascript函数:

directionsService.route(request, function(response, status)

我试过这个教程;

var response = {
<c:forEach var="responseString" items = "${responseString}">
    <c:out value="${responseString.response}" />
</c:forEach>
}

显然它不起作用,我有点搞砸了,请帮忙。

补充信息,${responseString.response}其实是JSON,我只是转换成String

{"routes": [{"bounds" : {"northeast":{"lat":14.650,"lng":121.050610}, "status":"OK"}

这是一个深度嵌套的JSON

【问题讨论】:

  • 你能简单地把var response = 放在JSON字符串之前吗?如果它是有效的 JSON,它应该可以正常工作。您可能会查看 JSON 库,然后解码/重新编码以进行显示。
  • @artlung,JSON 实际上来自 google map api,我已经解析了 JSON,将其作为 STRING 传递,但我无法将字符串转换为 javascript 变量

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


【解决方案1】:

做这样的事情:

  var availableTags = [
  <c:forEach items="${vendorMap}" var="vendor" varStatus="vendorStatus">
     '<c:out value="${vendor}" />'
     <c:if test="${!vendorStatus.last}">    
     ,    
     </c:if> 
  </c:forEach>
 ];

请注意,您不应在最后一个条目和单引号中添加“,”

【讨论】:

    【解决方案2】:

    由于您对每个都使用,我假设它将有多个响应,因此 var response = { 您应该使用数组 []。试试:

    var response = [
    <c:forEach var="responseString" items = "${responseString}">
        <c:out value="${responseString.response}" />,
    </c:forEach>
    ];
    

    在每个元素后面注明,

    根据要求编辑:

    for(var i in response){
       PUSH_TO_GOOGLE_MAPS_WIDGET(response[i]);
    }
    

    response[i] 将类似于 {"routes": [{"bounds" : {"northeast":{"lat":14.650,"lng":121.050610}, "status":"OK"}

    【讨论】:

    • 它仍然无法正常工作,如果我添加您的代码,我之前拥有的谷歌地图就会消失,我会假设,有问题。代码是在
    • ${responseString.response} 只是 JSON 格式的纯字符串。如何使用 JSTL foreach 将其传输到 javascript var?请帮忙。
    • 我不知道接下来你将如何处理响应,如果你想从响应数组中获取每一个响应并将其推送到谷歌地图小部件,你必须遍历 response 数组。 ..
    • 这就是我想做的,把它推到谷歌地图上。你如何迭代响应?你能举个例子吗