在jstl中使用javascript变量

我想使用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}">

解决方法:

“使用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内容一起提供给浏览器.

上一篇:java – 无法加载或实例化TagLibraryValidator类:org.apache.taglibs.standard.tlv.JstlCoreTLV


下一篇:java – 绑定Spring MVC中的列表映射