2013-02-18 5 views
1

Je suis en train de passer une chaîne de mon code java javascript comme ceci:en toute sécurité passer chaîne à javascript

myData.data = "${data.myString}"; 

Ce casse si myString contient une "

J'ai essayé de stocker une javascript chaîne en sécurité au lieu , juste remplacer " avec \" mais quand je l'utilise dans mon myString jsp-je obtenir une sortie laide avec \" montrant au lieu de "

Quelle est la meilleure façon de passer en toute sécurité une chaîne et ne pas gâcher le reste de ma sortie.

+0

pas une solution robuste, mais pouvez-vous utiliser des guillemets simples au lieu? –

+0

avez-vous essayé d'utiliser '(guillemet simple) au lieu de "(guillemets doubles) .Vous devrez peut-être aussi éviter cela –

+0

Une possibilité serait de l'encoder en base64? – merlin2011

Répondre

0

Remplacement des guillemets doubles avec " devraient travailler

1

Encode dans le code HTML dans le JSP:

<input id="test_hide" type="hidden" value="${URIUtil.encodeAll("http://www.google.com?q=a b","UTF-8")}"> 

Puis dans le JavaScript:

myData.data = decodeURIComponent(document.getElementById('test_hide').getAttribute('value')); 

Java - Convert String to valid URI object

+0

Ouais, je l'avais à l'origine. Mon utilisation de URLEncoder est floue :) Merci –

0

A mauvaise solution:

Vérifiez si votre chaîne a des guillemets, si oui, utilisez

myData.data = '${data.myString}'; 

si elle contient des guillemets simples utiliser

myData.data = "${data.myString}"; 

Cela va exploser si vous avez deux guillemets simples et doubles.

Une bonne solution:

Il suffit d'utiliser

&quot; 
Questions connexes