Как бороться с sigle цитатой в javascript на странице JSP? - PullRequest
0 голосов
/ 06 января 2012
onclick= "_deleteWPSchemeData(${viewWPMasterGrid.id}, '${viewWPMasterGrid.name}')"

$ {viewWPMasterGrid.name} возвращает мне строку (например, W.P.WINT OFF ALL'10), которая часто имеет символ одинарной кавычки, поэтому из вызывающего метода javascript я вообще не получаю второй параметр. Как бороться с проблемой?

Ответы [ 4 ]

2 голосов
/ 06 января 2012

Когда динамическая строка может быть помещена в строковый литерал JavaScript, она должна быть экранирована JS.Так же, как когда динамическая строка помещается внутри HTML-страницы, она экранируется от HTML.

Используйте commons-lang StringEscapeUtils.escapeECMAScript (или escapeJavaScript в зависимости от версии), чтобы экранировать строку.Вы можете создать очень простую функцию EL, чтобы сделать это прямо из JSP.

Обратите внимание, что у вас могут быть проблемы с одинарными кавычками, а также с двойными кавычками, тегами, EOL, обратной косой чертой, которые должны быть экранированы в литерале JS String.

1 голос
/ 06 января 2012

Похоже, вы могли бы сначала разбить второй параметр на его собственную переменную. Если я правильно понял ваш вопрос.

var viewWPMasterGridName = "${viewWPMasterGrid.name}";
onclick = "_deleteWPSchemeData(${viewWPMasterGrid.id},'" + viewWPMasterGridName + "')";
0 голосов
/ 06 января 2012

попробуйте это,

var name = "${viewWPMasterGrid.name}".replace(/'/g,"\\'");
0 голосов
/ 06 января 2012

Использование '${viewWPMasterGrid.name.replaceAll("'", "\'")}'

...