Возникли проблемы при интеграции Spring Roo с JQuery - PullRequest
0 голосов
/ 15 марта 2012

У меня есть сгенерированное Roo веб-приложение, в которое я пытаюсь внедрить JQuery (я знаю, что Roo использует Dojo, но я решил, что постараюсь заставить JQuery работать, так как я немного более знаком с этим).

Вещи, с которыми я начал работать

Я получил пользовательскую версию JQuery-UI из компоновщика тем, скопировал скрипты (файлы base и ui js) и файлы CSS вмое приложение.Затем я скопировал образец файла index.html, который вы также получаете, который показывает некоторые виджеты.

Все это работало нормально.

Вещи, которые не работают (JQuery-UI)

Мои проблемы начинаются, когда я пытаюсь интегрировать его в свои страницы.Я импортирую все три файла различными способами (используя те, которые я скачал, а также попробовал онлайн CDN (google-apis)).Я также добавил JQuery.noConflict (), чтобы быть уверенным, что он будет сосуществовать с Dojo.

Это работает (основные вещи)

$(document).ready(function($) { 
    alert('JQuery is working'); 
});

... но когда я что-то пробую с JQuery-UI, я ничего не получаю.Например,

$("#accordion").accordion({ header: "h3" });

Я получаю это в Firefox (и похожая ошибка в Chrome)

Error: $("#accordion").accordion is not a function

Я проверил источник просмотра, чтобы увидеть, какой URL он использует для каждоготри скрипта и вставили каждый обратно в мой браузер, чтобы убедиться, что они верны и, например, не заблокированы Spring-security или чем-то еще.Все хорошо.

Я также пытался создать свой собственный макет (с плитками), который полностью обходит любой материал Dojo, который мог бы добавить Roo, но все равно получал ту же ошибку.

Также попытался скопировать файлы JS / CSS в / src / main / resources / META-INF и просто прямо в папку webapp (где находятся изображения) и соответственно скорректировал URL-адреса.

Я могу только догадываться, что это связано с тем, что мои страницы состоят из плиток, и это препятствует загрузке скрипта JQuery-UI, и поэтому он не может найти функцию аккордеона (или любую другую дляэто важно).

Я заметил в источнике, что у функции аккордеона есть предложение 'зависящий от', которое перечисляет файлы js ядра и виджета.Нужно ли мне их тоже откуда-то брать вручную?(Я заметил, что они находятся в комплекте разработчика, но упомянутый мной файл index.html работает без явного «импорта» этих ...

До сих пор я был впечатлен Roo, он меня так спас.много времени (особенно для бэкэнда Java). И по тому, как он спроектирован, я знаю, что JQuery возможен (весь код Dojo аккуратно помещается в файлы tagx, поэтому его легко заменить), плюс я вижу, что другие люди имеюту меня все получилось. Так что я просто делаю что-то не так, но я не могу понять, что это такое.

Если кто-то может помочь, буду очень признателен, спасибо!

1 Ответ

2 голосов
/ 19 марта 2012

@ Ричард Я использую в своем приложении и Dojo, и jQuery. Я использую только jQuery для интеграции атмосферы, но без интерфейса.

Я загружаю jQuery как таковой: Добавьте это в load-scripts.tagx:

<!-- jQuery URL -->
<spring:url value="/resources/jQuery/jquery-1.6.4.js" var="jquery_url" />
<spring:url value="/resources/jQuery/jquery.atmosphere.js" var="jquery_atmosphere_url" />

Я делаю это вокруг строк 14-ти. Позже в файле я делаю это:

<!-- jQuery scripts -->
<script type="text/javascript" src="${jquery_url}"><!-- required for FF3 and Opera --></script>
<script type="text/javascript" src="${jquery_atmosphere_url}"><!-- required for FF3 and Opera --></script>

Я делаю это около 42-й строки. Я также загружаю 2 пользовательских виджета Dojo и использую Dojo 1.7.1 (CDN от google-apis) вместо поставляемого Dojo 1.6. Все это я делаю в load-scripts.tagx.

...