【问题标题】:Having trouble integrating Spring Roo with JQuery无法将 Spring Roo 与 JQuery 集成
【发布时间】:2012-03-14 21:29:03
【问题描述】:

我有一个 Roo 生成的 web 应用程序,我正在尝试将 JQuery 放入其中(我知道 Roo 使用 Dojo,但我想我会尝试让 JQuery 工作,因为我对此比较熟悉)。

我正在做的事情

我从主题生成器获得了自定义版本的 JQuery-UI,将脚本(基本和 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 或其他任何东西阻止。一切都好。

我还尝试制作自己的布局(使用图块),它完全绕过了 Roo 可能添加的任何 Dojo 内容,但仍然出现相同的错误。

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

我只能猜测这与我的页面由图块组成有关,这会阻止加载 JQuery-UI 脚本,因此它找不到手风琴功能(或任何其他功能) .

我在源代码中注意到,手风琴函数有一个“依赖”子句,其中列出了核心和小部件 js 文件。我是否也需要从某个地方手动获取这些? (我注意到它们在 developer-bundle 中,但我提到的 index.html 文件在没有明确“导入”这些文件的情况下工作......

到目前为止,Roo 给我留下了深刻的印象,它为我节省了很多时间(尤其是在后端 Java 方面)。从它的设计方式来看,我知道 JQuery 是可能的(所有 Dojo 代码都整齐地放入 tagx 文件中,因此很容易换出),另外,我可以看到其他人已经让它工作了。所以这只是我做错了什么,但我无法弄清楚它是什么。

如果有人可以提供帮助,将不胜感激,谢谢!

【问题讨论】:

  • 文件的保存位置与问题无关。尝试更改加载 jQuery 的顺序。也可以尝试使用“jQuery”而不是“$”。
  • 首先,如果你想放弃Roo,你可以继续。请记住,Spring Roo 是一项持续的工作,在尝试更改 Roo 的内置行为之前,需要对 Roo 的工作原理有相当多的了解。如果您问一个关于如何将 jQuery 与 Spring Roo 集成的问题,而不是发布这个问题,我相信我能帮助您。 :) 干杯。
  • 你去 bhagyas :) 请帮忙,我很感激!谢谢kitgui,我确实尝试过这些事情(并将var重命名为$j等,但如果我错过了什么,我会重试
  • 顺便说一句,我开始研究 JQuery 是因为我看到很多帖子说 Dojo 不够好。但是由于我已经对其进行了更多研究,Dojo 1.7+ 似乎人们现在可能比 JQuery 更喜欢它。我根本不是专家,对人们的想法如此感兴趣。既然我已经开始使用 Dojo,我应该坚持使用它吗?

标签: jquery jquery-ui spring-roo


【解决方案1】:

@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 小部件,并且我使用的是 Dojo 1.7.1(来自 google-apis 的 CDN)而不是随附的 Dojo 1.6。所有这些都是我在 load-scripts.tagx 中完成的。

【讨论】:

  • 感谢 CodeChimp,我已经尝试了您的建议并回复了。我已经完全破坏了我的项目(同时使用 Dropbox 和 Maven 的某种组合:) 所以当我修复它时,我会回帖。
  • 没有忘记这个,只是最近没时间开发,但如果可行的话会接受,老实说:)
  • 刚刚尝试添加您的代码并运行一些 jquery 命令,它可以工作,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
相关资源
最近更新 更多