![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Cyclone |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 2.5.2007 Репутация: нет Всего: нет |
Доброго дня.
На JSP странице имеется <select>. На событии onchange вызывается функция с параметрами:
${property.name} - EL expression. Если оно содержит в себе стоковое значение с кавычками, то функцию вызвать не удаётся. Различные вариации на тему escape() и encodeURIComponent() в onchange="" вызвать не удаётся. Подскажите, пожалуйста, решение. Спасибо. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
при чем тут javascript? проблема была бы и в том случае, если бы ты хотел получить html/xml структуру:
тебе надо в JSP заэкранировать кавычки в значении property.name(добавить слеш перед кавычками: " -> \") |
|||
|
||||
Cyclone |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 2.5.2007 Репутация: нет Всего: нет |
Собственно, экранировать на JSP/javascript frontend и пытаюсь.
На мой взгляд проблемы бы не возникло, если бы escape() можно было вызывать в onchange:
Однако такая конструкция не срабатывает. В плане передачи сторокового параметра с кавычками в принципе работает овт такая некрасивая штука:
Но так как всё это находится в forEach, то есть выполнется для каждого элемента list'а, пришедшего с сервера, в функцию foo() каждый раз попадает одна и та же переменная escapedName (последняя в forEach) - тоже не вариант. |
||||
|
|||||
skyboy |
|
||||||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
не вали в кучу. JSP формирует HTML+Javascript код. который отправляется клиенту. и попытки использовать именно javascript обречены на провал, потому как клиент код
не обработает как надо - будет ошибка синтаксиса. и код
не сработает, если у тебя в property.name будут уже одинарные кавычки. сменил шило на мыло. потому если и делать что-то, то только в JSP составляющей. с другой стороны, раздел не тот, и у меня нет опыта работы с JSP. я так понимаю, должно быть примерно так:
хотя способ не без недостатков: если кавычки уже были экранированы, то они опять станут "сбойными" |
||||||
|
|||||||
Cyclone |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 2.5.2007 Репутация: нет Всего: нет |
Спасибо большое...
Кажется, мне подходит следующий код:
Недостатоков на первый взгляд не выявлено. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
пометь вопрос решенным.
|
|||
|
||||
Cyclone |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 2.5.2007 Репутация: нет Всего: нет |
Честно говоря, мне верится, что существует более человеческое решение...
Не всегда же есть возможность использовать JSTL. Это сообщение отредактировал(а) Cyclone - 25.3.2010, 19:35 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
||||
|
||||
IDVsbruck |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
Не согласен. Вопрос по существу. Просто не обязательно выкладывать jsp-код (сам сильно сержусь, когда всовывают в этот раздел ПэХаПэ-код), хотя для понимания дела это все-таки пришлось бы делать. Так что вопрос имеет место быть.
Думаю, твою проблему может решить вынос функции в <script></script> раздел, где не будет таких сложностей с экранированием кавычек. То есть инициализируем переменную, значение которой устанавливается прекомпилятором с помощью JSTL, а дальше в функции работаем с этой переменной. Дальше javascript сам разберется с экранированием. Код предлагать не буду, так как и так все понятно. |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |