en utilisant la variable javascript dans jstl
Je tiens à réitérer un HashMap en javascript à l'aide de jstl. est-il possible de faire comme ça?
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>
}
il ne va pas à l'intérieur après
<c:if test="${groupMap.key==group}">
source d'informationauteur coder247
Vous devez vous connecter pour publier un commentaire.
"pour effectuer une itération sur un HashMap en javascript à l'aide de jstl" - Pas possible
JSTL est exécuté côté serveur par votre conteneur de servlet pour qui le Javascript est juste un texte qui serait ignorée alors que JavaScript est exécuté côté client où JSTL est inconnue. Une fois que le serveur termine le traitement de JSTL, le code HTML généré(le cas échéant) de la JSTL le long de avec d'autres JavaScript/HTML sera rendue.
Par exemple, si vous avez cela,
Si les identifiants des haricots dans la collection sont 0, 1, 2, le serveur rend le suivant pour le côté client en exécutant le code ci-dessus,
Maintenant, le navigateur va vous donner 4 alertes sur le chargement de la page (si vous avez 10000 articles, vous rendre 10000 alerte déclarations pour le navigateur). De sorte que le point est que vous n'avez pas itéré collection Java en JavaScript, vous avez tout simplement généré un grave d'instructions Javascript dans le serveur de l'itération de la collection à l'aide de JSTL et vous avez fourni ces instructions Javascript, le long de avec d'autres du contenu html au navigateur.
Il n'est pas possible car JSP est exécuté en premier sur le côté serveur, puis le JavaScript est exécuté côté client.
Vous pouvez toujours utiliser le
c:forEach
d'une boucle sur le${configuredGroupMap}
mais vous ne pouvez pas faire la comparaison à l'échellegroupMap.key
etgroup
directement.Au lieu de cela, une solution dans ce cas consiste à attribuer à côté serveur
groupMap.key
à côté client variable en javascript premier. Puis utiliser le javascript pour le vérifier si, au lieu dec:if
.J'ai modifié votre exemple ci-dessous
Marimuthu a cloué vers le bas. JavaScript et JSP/JSTL ne pas fonctionner en synchronisation que vous attendez de la part de l'ordre dans le codage. Java/JSP processus de la page de haut en bas en premier, puis le serveur envoie le code HTML/CSS/JS résultat de la webbrowser et enfin le webbrowser processus de la page (ne contenant pas de n'importe quelle ligne de Java/JSP!) de haut en bas.
La meilleure solution est de laisser JSP/JSTL générer un objet JavaScript variable à laquelle vous pouvez accéder ultérieurement dans le code JS.
Ce sera à la fin comme celle-ci dans côté client (clic à droite de la page et l'Affichage de la Source pour être sûr)
Enfin réécrire
checkSelection()
comme suit:Voir aussi: