Je récupère une valeur de notre base de données en utilisant JSTL. Je l'insère directement dans un javascript pour l'utiliser comme variable. J'ai besoin de la sortie de la valeur que le JSTL détient pour être échappé parce que s'il y a des guillemets simples ou doubles, il casse mon script. La valeur est spécifiée par l'utilisateur.La sortie JSTL s'est échappée?
Exemple:
Faire ce qui suit:
<c:set var="myVar" value="Dale's Truck"/>
<script type="text/javascript">
var mayVar = '${myVar}';
</script>
finirais réellement ressembler à:
<script type="text/javascript">
var mayVar = 'Dale's Truck';//extra single quote breaks the JS
</script>
donc je dois convertir JSTL var à échapper comme « Dale% 27s Truck "avant arrive à la JS car il est déjà trop tard quand il arrive à mon JS pour être en mesure de le faire dans JS.
Cela fonctionne, merci! J'ai utilisé l'approche double antislash au lieu de% 27. – UpHelix
N'écrivez jamais votre propre fonction d'échappement! Parce que ce sera faux. Par exemple, l'exemple de double backslash échoue pour l'entrée "a b \\ 'c". Il sera converti en \\ 'afin que la barre oblique inverse soit échappée et que la citation unique termine la chaîne. Utilisez les fonctions existantes prouvées et déboguées, par ex. var x = ' $ {myVar} spring: escapeBody>'; –