Несовместимость с плагином Grails? - PullRequest
0 голосов
/ 25 июля 2011

Я создаю приложение Grails, которое использует плагин RichUI и плагин Atmosphere. Однако, похоже, что с этими плагинами есть некоторая несовместимость. Когда я объявляю тег ресурсов в заголовке страницы .gsp, только один из плагинов работает правильно. Если я скажу так:

<head>
  <atmosphere:resources/>
  <resource:rating />
     ...

работает только плагин RichUI (звездный рейтинг). С другой стороны, работает только подключение атмосферы:

<head>
  <resource:rating />
  <atmosphere:resources/>
   ...

Есть идеи, почему это происходит? Я делаю что-то неправильно? Спасибо большое.

UPDATE

Это ресурсы, импортируемые на странице gsp:

<script type="text/javascript" src="/Ontourtest/plugins/atmosphere-0.4.1/js/jquery-1.4.2.js"></script>

<script type="text/javascript" src="/Ontourtest/plugins/atmosphere-0.4.1/js/jquery.atmosphere.js"></script>

<script type='text/javascript' src='/Ontourtest/plugins/richui-0.8/js/prototype/prototype.js'></script>
<script type='text/javascript' src='/Ontourtest/plugins/richui-0.8/js/rating/behavior.js'></script><script type='text/javascript' src='/Ontourtest/plugins/richui-0.8/js/rating/rating.js'></script><link rel='stylesheet' href='/Ontourtest/plugins/richui-0.8/css//rating.css'></link>

Видите ли вы какие-либо потенциальные несовместимости?

1 Ответ

1 голос
/ 25 июля 2011

Это может быть столкновение имени метода;оба плагина могут объявлять функции с одинаковыми именами в пространстве имен по умолчанию.Я использовал YUI Namespace для решения этой проблемы в моих приложениях.

Это также может быть конфликт в зависимостях плагинов, например, при импорте каждой версии одной и той же библиотеки.Попробуйте просмотреть сгенерированный HTML-код вашей страницы gsp и посмотреть, какие теги ресурсов плагина импортируются.

edit:

Я быстро просмотрел эти библиотеки Javascript иСтолкновение, вероятно, является токеном "$", который по-разному используется JQuery (используется Atmosphere) и Prototype (используется RichUI).

Согласно ссылке JQuery , вызывая noConflict ()как показано ниже, должно решить проблемы.Имейте в виду, я не пробовал это, и я не знаю, будут ли файлы компонента .js теперь работать без дальнейшей модификации:

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  $.noConflict();
  // Code that uses other library's $ can follow here.
</script>
...