"для итерации HashMap в javascript с использованием jstl" - невозможно
JSTL выполняется на стороне сервера вашим контейнером сервлетов, для которого Javascript - это просто текст, который будет пропущен, тогда как JavaScript выполняется на стороне клиента, где JSTL неизвестен. После того как сервер завершит обработку JSTL, будет сгенерирован HTML (если есть) из JSTL вместе с другим 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>
Если идентификаторы бинов в коллекции равны 0, 1, 2, сервер передает на стороне клиента следующее, выполнив приведенный выше код:
alert('0')
alert('zero')
alert('1')
alert('2')
Теперь браузер выдаст вам 4 оповещения о загрузке страницы (что, если у вас 10000 элементов, вы отправите 10000 заявлений о предупреждении в браузер). Таким образом, дело в том, что вы не повторяли коллекцию Java в JavaScript, вы просто сгенерировали серьезный оператор Javascript на сервере, выполнив итерацию коллекции с использованием JSTL, и вы предоставили эти операторы Javascript вместе с другим содержимым html в браузер.