2011-04-10 5 views
6

Я использую Java Facelets и JQuery, однако выражение

$('...') 

в конфликтах JQuery с выражением Е.Л., как я убегаю один в JQuery в?

Я хотел бы избежать большого куска Javascript тоже.

ОТВЕТИЛ

Чтобы преобразовать существующий JSP в Facelets XHTML, это удобно, чтобы просто обернуть существующий JavaScript на <![CDATA[ ... ]]>. Тем не менее, выходные скрипты для <script> обернуты <!-- --> комментарием, который конфликтует с разделом CDATA:

<script><![CDATA[ scripts... ]]></script> 

=> <script><!-- <![CDATA[ scripts... ]]> --></script> 

Чтобы решить эту проблему, вы должны также закомментировать CDATA:

<script>/* <![CDATA[ */ scripts... /* ]]> */</script> 

=> <script><!-- /* <![CDATA[ */ scripts... /* ]]> */--></script> 

Смотрите также When is a CDATA section necessary within a script tag?.

+0

В соответствии с вашим обновления, реальная проблема приходит ясно: вы пишете JS код сырыми в виде файла XML и XML-парсер падения '$', которые должны быть представленный как «&'. Помимо уродливого обхода «CDATA», лучшим решением является размещение JS-кода в собственном файле '.js'. В конце концов, название вопроса и тело не описывают реальную проблему и поэтому вводят в заблуждение. – BalusC

ответ

3

Это нормально не конфликтует. EL использует синтаксис ${}. Во всяком случае, вы можете либо использовать jQuery() ($() - это просто сокращение), либо просто поместить JS-код в свой собственный файл .js.

11

Если кто-нибудь нужно, то Expression Language Specification Version 2.2 Maintenance Release описывает, как избежать EL выражений:

Для создания буквенных значений, которые включают последовательность символов "${" или "#{", разработчик может выбрать использовать составное выражение как показано здесь:

${'${'}exprA} 
#{'#{'}exprB} 

Полученные значения затем будет строк ${exprA} и #{exprB}.

В качестве альтернативы, символы побег \$ и \# могут быть использованы, чтобы избежать , что в противном случае будет рассматриваться как Eval-выражения. Учитывая буквальные-выражения:

\${exprA} 
\#{exprB} 
Смежные вопросы