无法将Spring Roo与JQuery集成

时间:2012-03-14 21:29:04

标签: jquery jquery-ui spring-roo

我有一个Roo生成的webapp,我正在尝试将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

我已经检查了view-source以查看它为每个三个脚本使用的URL,并将每个脚本粘贴回我的浏览器以检查它们是否正确,例如没有被Spring-security或其他任何东西阻止。一切都很好。

我也尝试制作自己的布局(使用磁贴),完全绕过Roo可能添加的任何Dojo内容,仍然会得到相同的错误。

还尝试复制/ src / main / resources / META-INF下的JS / CSS文件,直接在webapp文件夹下(图像所在的位置),并相应地调整URL。

我只能猜测这与我的页面由tile组成有关,而这阻止了JQuery-UI脚本被加载,因此无法找到手风琴功能(或任何其他功能) 。

我在源代码中注意到,accordion函数有一个'depends'子句,它列出了core和widget js文件。我是否还需要从某个地方手动获取这些内容? (我注意到它们在开发人员包中,但我提到的index.html文件没有明确地'导入'这些......

到目前为止,我对Roo印象非常深刻,它为我节省了很多时间(特别是对于后端Java的东西)。从它的设计方式我知道JQuery是可能的(所有Dojo代码都整齐地放入tagx文件中,因此很容易更换),而且,我可以看到其他人已经让它工作了。所以这只是我做错了,但我无法弄清楚它是什么。

如果有人可以提供帮助,我将非常感谢,谢谢!

1 个答案:

答案 0 :(得分:2)

@Richard我在我的应用中使用了Dojo和jQuery。我只使用jQuery进行Atmosphere集成,但没有UI。

我正在加载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 Widgets,我使用Dojo 1.7.1(来自google-apis的CDN)而不是运送的Dojo 1.6。我在load-scripts.tagx中做的所有这些。