Vaadin WidgetSet中的名称冲突

时间:2014-04-13 10:28:31

标签: java javascript gwt liferay vaadin

我正在努力将第三方javascript库集成到Liferay门户的Vaadin WidgetSet中。我正在使用Vaadin版本6.7.3和Liferay 6.1。

到目前为止,有两个独立的项目,每个项目都会生成一个不同的jar文件。两个模块描述符中的inherits元素是相同的:

<inherits name="com.vaadin.portal.gwt.PortalDefaultWidgetSet" />

当我使用Vaadin Liferay控制面板重新编译我的WidgetSet时,我看到编译的结果被转储到tomcat-folder/webapps/ROOT/html/VAADIN/widgetsets/com.vaadin.portal.gwt.PortalDefaultWidgetSet,这是预期的。

每个Widget在其客户端模块描述符中定义自己的javascript和样式表,如下所示:

小工具1

<script src="script_1.js"></script>
<stylesheet src="styles_1.css"></stylesheet> 

小工具2

<script src="script_2.js"></script>
<stylesheet src="styles_2.css"></stylesheet>

由于每个javascript文件和样式表的名称不同,我看到文件夹tomcat-folder/webapps/ROOT/html/VAADIN/widgetsets/com.vaadin.portal.gwt.PortalDefaultWidgetSet确实包含script_1.jsscript_2.jsstyles_1.cssstyles_2.css

问题在于名称冲突。这两个小部件在样式表/ javascript文件中定义样式和函数,但有些名称相同,这会导致意外行为。使用firebug,我已经确认在使用其中一个小部件时都会加载样式表和两个javascript文件。我还检查过,如果我取消部署其中一个小部件并重新编译小部件集,它就能完美运行。

由于这些javascripts和样式表实际上是第三方提供的,并且因为我的阅读乐趣而被混淆,因此通过所有名称来解决冲突将会有点乏味。

我试图强制gwt编译器通过在客户端模块描述符中传递属性来重命名widgetset,如下所示:

<set-property name="widgetset" value="custom.widgetset.FooBarWidgetSet"/>

也是如此:

<set-configuration-property name="widgetset" value="custom.widgetset.FooBarWidgetSet"/>

我原以为每个小部件都会为每个小部件创建tomcat-folder/webapps/ROOT/html/VAADIN/widgetsets下的不同文件夹,但它不起作用。说实话,我不确定这是否可行,因为Vaadin Liferay控制面板有一个字段说明 Active WidgetSet (见this related image

我的问题是:如何解决不同样式表/ javascript文件中的名称冲突?

0 个答案:

没有答案