2012-03-30 5 views
0

Я читал некоторые Struts2 переменную в JavaScript следующим образом:побег Котировка - JavaScript, распорки 2

<javascript type="text/javascript"> 
var data='<s:property value="simulationInfos"/>'; 
<javascript> 

Если мои simulationInfos содержит одинарную кавычку», я получаю ошибку: неожиданный идентификатор.

поэтому я попытался избежать цитаты следующим образом:

var data='<s:property value="simInfos" escapeJavaScript="true"/>'; 
and var data='<s:property value="simInfos" escapeHTML="true"/>'; 

Я получаю сообщение об ошибке: Атрибут escapeJavaScript (или escapeHTML) недопустимый для тега имущества в соответствии с TLD.

Любая идея?

+2

Зависит от версии struts2, которую вы используете, посмотрите на барабан struts2-core-VERSION, чтобы определить, какие свойства доступны. Вы заметите, что URL-адрес поддержки содержит номер версии, измените его, чтобы отразить версию, которую вы используете в настоящее время. – Quaternion

ответ

1

Где появляется одиночная кавычка? В ценности, я предполагаю?

В этом случае в вашем javascript перед выполнением операции struts2 запустите этот код в значении. Это регулярное выражение для удаления котировок для javascript.

var escapedString = valueString.replace(/(['"])/g, "\\$1"); //note, includes double quotes 

Если вам нужно сохранить кавычки, как URL закодирован, сделать это

var escapedString = valueString.replace(/(['])/g, "&apos;"); 
+0

Да, одиночная кавычка появляется в значении "simulationInfos". Я запускаю ваш код. В javascript, чтобы узнать, что он делает, я замечаю, что он преобразует A + B в A \ '+ B, что вы имеете в виду: он удаляет цитату ?. Я сделал то же самое в java: valueString.replace ("'", "\\'") и он работает, thanx :) –

+0

['"] удаляет одиночные и двойные кавычки. То, что вы сделали для своего окончательного решения, - это escape-последовательность для выхода из косой черты и цитаты, поэтому оба они появляются в финальной строке. – FlavorScape

2

Если вы хотите использовать встроенные escapeJavascript из <s:property>, а затем перейти на 2.2.1 Кроме того, в JavaScript, вы можете легко избежать unexpected identifier Ошибка, если вы использовали двойные кавычки.

var data = "<s:property value="simulationInfos"/>"; 
Смежные вопросы