与Grails插件不兼容?

时间:2011-07-25 10:53:29

标签: grails grails-plugin

我正在创建一个Grails应用程序,该应用程序使用RichUI插件和Atmosphere插件。但是,它看起来与这些插件有某种不兼容性。当我在.gsp页面的头部声明资源标记时,只有一个插件正常工作。如果我这样声明:

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

仅适用于RichUI插件(星级)。换句话说,它只适用于大气插件:

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

知道为什么会这样吗?难道我做错了什么? 非常感谢。

更新

这是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 个答案:

答案 0 :(得分:1)

可能是方法名称冲突;两个插件都可以在默认命名空间中声明同名函数。我已经使用YUI Namespacing在我的应用中解决了这个问题。

它也可能是插件依赖项中的冲突,例如每个导入同一个库的不同版本。尝试查看生成的gsp页面的html,看看插件资源标签的导入内容。

修改

我快速浏览了这些Javascript库,碰撞可能是JQuery(由Atmosphere使用)和Prototype(由RichUI使用)使用的“$”令牌。

根据JQuery reference,调用“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>