我正在创建一个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>
您看到任何潜在的不兼容性吗?
最佳答案
可能是方法名称冲突;两个插件都可以在默认 namespace 中声明同名函数。我已经使用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>
关于grails - 与Grails插件不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6814983/