小编典典

在jstl中使用javascript变量

jsp

我想使用jstl在JavaScript中迭代HashMap。有可能这样做吗?

function checkSelection(group,tvalue){
alert(group);
alert(tvalue);

<c:forEach items="${configuredGroupMap}" var="groupMap">
    alert("aa<c:out value="${groupMap.key}"/>");
    <c:if test="${groupMap.key==group}">
        alert("t<c:out value="${groupMap.key}"/>");
        <c:if test="${groupMap.value==tvalue}">
            alert("equal");
        </c:if>
    </c:if>
</c:forEach>
}

之后不会进去

 <c:if test="${groupMap.key==group}">

阅读 819

收藏
2020-06-08

共1个答案

小编典典

“使用jstl在javascript中迭代HashMap”-不可能

JSTL是在服务器端由您的servlet容器执行的,对于该容器来说,Javascript只是可以跳过的文本,而JavaScript在未知JSTL的客户端中执行。服务器完成对JSTL的处理后,将从JSTL生成的HTML(如果有)与其他JavaScript
/ HTML一起呈现。

例如,如果您有这个,

<c:forEach var="myItem" items="${myCollection}">
alert('<c:out value="${myItem.id}">')
<c:if test="${myItem.id == 0}"> 
   alert("zero"); 
</c:if>
</c:forEach>

如果集合中Bean的ID为0、1、2,则服务器通过执行上述代码将以下内容呈现给客户端,

alert('0')
alert('zero')
alert('1')
alert('2')

现在,浏览器将在加载页面时为您提供4条警报(如果您有10000个项目,则将向浏览器呈现10000条警报语句)。因此,关键是您没有在JavaScript中迭代Java集合,只是在服务器上使用JSTL迭代了该集合中的大量Javascript语句,并且已将这些Javascript语句以及其他html内容提供给浏览器。

2020-06-08